【问题标题】:Where like not working inside foreach loop in laravel在 laravel 的 foreach 循环中不工作的地方
【发布时间】:2020-01-21 09:16:41
【问题描述】:

就像不在 Laravel 的 foreach 循环中工作一样。以下始终返回null。在这里我想使用多重排序,但响应总是空白。

public function searchBy(Request $request)
{ 
    if($request->name!=''){ 
       $data['name']=$request->name;
    }

    if($request->s_name!=''){
       $data['short_name']=$request->s_name;
    }

    if($request->pin!=''){
        $data['pin_code']=$request->pin;
    }

    if($request->city!=''){
       $data['city']=$request->city;
    }

    $customers = Customer::get();

    foreach ($data as $key => $value) {
        // return $key;
       $customers = $customers->where($key,'LIKE','%'.$value.'%');
    }

    return response()->json([
        'data' =>$customers,
    ]);
}

【问题讨论】:

  • 请编辑您的问题以更好地格式化代码
  • 为什么喜欢在foreach里面?如果表包含更多数据,那么您就超时了,只需使用查询进行搜索。

标签: php laravel eloquent


【解决方案1】:

变量$customers 应该是QueryBuilder,你应该在最后调用get() 来检索你的项目。

$customers = Customer::query();

foreach ($data as $key => $value) {
    $customers->where($key,'LIKE','%'.$value.'%');
}

return response()->json([
    'data' => $customers->get(),
]);

QueryBuilder 是一个对象,它被设计为通过引用传递,因此您不需要重新分配它。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-06-05
    • 1970-01-01
    • 1970-01-01
    • 2016-09-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多