【问题标题】:The query did not execute properly查询未正确执行
【发布时间】:2021-06-21 13:05:16
【问题描述】:
$data = User::where('inet_id', "like", "%" . $inet . "%")
         ->orWhere('email', "like", "%" . $email . "%")
         ->orWhere('phone', "like", "%" . $phone . "%")
         ->get();
  1. 它只在搜索所有 3 个数据一次时执行查询。但我也想按单独的数据进行搜索。

【问题讨论】:

    标签: laravel laravel-5 eloquent


    【解决方案1】:

    我觉得你可以用when

    $data = User::where(function($q)use($inet,$email,$phone){
          $q->when(!empty($inet), function ($query) use($inet) {
                $query->where('inet_id', 'like', "%{$inet}%");
             })->when(!empty($email), function ($query) use ($email) {
                $query->orWhere('email', 'like', "%{$email}%");
             })->when(!empty($phone), function ($query) use ($phone) {
                $query->orWhere('phone', 'like', "%{$phone}%");
          })
        })->get();
    

    【讨论】:

    • @Tim Lewis.Thanks for enhancement :)
    • 没问题 :) 一个旁注,为了“面向未来”这段代码,我会将整个 ::when() 放在 where(function($subQuery) { ... }); 块中,这样如果您需要添加另一个非就像检查它不冲突。 IE。 WHERE (... OR ... OR ...) AND/OR ...WHERE ... OR ... OR ... AND/OR ...
    • 我起初认为同样的想法,但我认为 op 正在寻找执行只有它具有价值的地方,所以避免了.l
    • 一切都好 :) 只是我会添加的东西,但不用担心;这回答了直接的问题。干杯!
    • 如果我输入数据为0,它不会过滤数据。
    猜你喜欢
    • 2019-05-10
    • 2015-04-17
    • 1970-01-01
    • 1970-01-01
    • 2021-10-13
    • 2016-03-09
    • 1970-01-01
    相关资源
    最近更新 更多