2017-07-28 27 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] [ '值']

相关问题