2017-07-28 53 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; 

總是說未定義的變量:輸入 什麼是兩個值進行比較電子郵件的最好辦法請指導如何laravel檢查一個字段包含兩個值4.2

+2

你爲什麼不去做一個的print_r($輸入);並檢查它是什麼打印 – Exprator

+0

你使用dd得到些什麼認沽($輸入[「電子郵件」] [0] [「值」])? –

+0

您需要use'加上'以功能條款。 –

回答

2

添加use($input)$input變量傳遞給封閉範圍:

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

閉包也可以繼承父範圍的變量。任何這樣的變量都必須傳遞給use語言結構。

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

+0

它說未定義指數:電子郵件 – Amy

+0

陣列 ( [種類] =>加#人 [ETAG] => 「S/S」 [生日] => 1996年8月18日 [兩性] =>男性 [郵件] =>數組 ( [0] =>數組 ( [值] => [email protected] [型] =>帳戶 ) ) – Amy

+1

@AmanJoshi這是完全不同的錯誤,這意味着現在你可以訪問'$ input'變量瓶蓋內,但變量沒有'email'。做'$輸入[郵件] [0] [0] [ '值']的''而不是輸入$ [ 'email']' –

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']); 
    } 
}) 

但要確保你總是有這樣的價值$輸入[ '電子郵件'] [0] [ '值']

相關問題