【问题标题】:how to check one field with two values in laravel 4.2如何在laravel 4.2中检查一个具有两个值的字段
【发布时间】:2017-07-28 05:59:34
【问题描述】:
$input = Input::all();


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

   print_r($user);die;

总是说未定义的变量:输入 请指导将电子邮件与两个值进行比较的最佳方法是什么

【问题讨论】:

  • 你为什么不做一个 print_r($input);并检查它正在打印什么
  • dd($input['emails'][0]['value']) 得到了什么输出?
  • 需要在函数子句中添加use。

标签: php laravel


【解决方案1】:

添加use($input) 将$input 变量传递给闭包范围:

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

闭包也可以从父作用域继承变量。任何此类变量都必须传递给 use 语言结构。

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

【讨论】:

  • 显示未定义索引:电子邮件
  • Array ([kind] => plus#person [etag] => "s/s" [birthday] => 1996-08-18 [gender] => 男性 [emails] => Array ([0] => 数组([值] => s@gmail.com [类型] => 帐户))
  • @AmanJoshi 这是完全不同的错误。这意味着现在您可以访问闭包内的$input 变量,但该变量没有email。使用$input[emails][0][0]['value'] 而不是$input['email']
  • 有两种情况我收到电子邮件和电子邮件数组需要同时设置
  • 是的@Alexey Mezenin 如果电子邮件未定义,它会跳过什么方式,如果存在,它将检查电子邮件数组。它可以是电子邮件变量或电子邮件数组,我想从输入值中检查用户的电子邮件
【解决方案2】:
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']);
    }
})

但请确保您始终拥有此值 $input['emails'][0]['value']

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-10-30
    • 2019-12-27
    • 1970-01-01
    • 1970-01-01
    • 2011-08-30
    • 2011-02-14
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多