2017-07-28 10 views
1
$input = Input::all(); 


$user = User::where(function($q) { 
      $q->where('email', $input['email']) 
      ->orWhere('email', $input['emails'][0]['value']); 
     }) 
     ->first(); 

    print_r($user);die; 

immer ein Feld mit zwei Werten zu überprüfen, sagt Undefined variable: Eingang Was ist der beste Weg, um E-Mail mit zwei Werten vergleichen bitte leitewie in Laravel 4.2

+2

warum nicht Sie tun print_r ($ input); und überprüfe, was gedruckt wird – Exprator

+0

Was hast du mit dd ($ input ['emails'] [0] ['value']) erreicht? –

+0

Sie müssen der Funktionsklausel 'use' hinzufügen. –

Antwort

2

use($input) Fügen Sie die $input Variable die passieren Verschlussbereich:

User::where(function ($q) use ($input) { 

Verschlüsse können auch Variablen aus dem übergeordneten Bereich erben. Solche Variablen müssen an das Sprachkonstrukt use übergeben werden.

http://php.net/manual/en/functions.anonymous.php

+0

Es sagt Undefined index: E-Mail – Amy

+0

Array ( [Art] => und # Person [etag] => "s/s" [Geburtstag] => 1996.08.18 [Geschlecht] => männlich [E-Mails] => Array ( [0] => Array ( [Wert] => [email protected] [type] => Konto ) ) – Amy

+1

@AmanJoshi, die ganz andere Fehler ist. Dieses Mittel Jetzt können Sie auf die '$ input'-Variable innerhalb des Closings zugreifen, aber die Variable hat keine' email'. Führen Sie '$ input [emails] [0] [0] ['value']' anstelle von '$ input [ 'E-Mail'] ' –

0
User::where(function($q) use ($input) { 
    $q->where('email', $input['emails'][0]['value']); 
    if (array_key_exists('email', $input)) { 
     $q->orWhere('email', $input['emails'][0]['value']); 
    } 
}) 

aber stellen Sie sicher, dass Sie immer $ input dieser Wert haben [ 'E-Mails'] [0] [ 'value']