如何在模型中的任何列上执行where()

时间:2018-12-18 00:11:10

标签: laravel

我要对LIKEuser_idclient_idstart_time以及end_time进行四行Model::where('client_id','LIKE','%'.$q.'%') 查询

我有当前的陈述

client_id

但是,我希望不使用whereOr而不是const getFarItems = () => { return [ { key: 'profile', text: <Persona text="Kat Larrson" />, onClick: () => console.log('Sort') } ] } const FabricHeader: React.SFC<props> = () => { return ( <div> <CommandBar items={getItems()} farItems={getFarItems()} ariaLabel={'Use left and right arrow keys to navigate between commands'} /> </div> ); } ,而是可以搜索所有这四个列,而不是只搜索其中的一个,因为这样对我的问题 先感谢您。

3 个答案:

答案 0 :(得分:2)

您可以使用位置和搜索记录

$user_id = $request->user_id ? '%' . $request->user_id . '%' : '';
$client_id = $request->client_id ? '%' . $request->client_id . '%' : '';

$modal = Modal::where(function($q) use($user_id, $client_id) { 
             $q->where("user_id", "like", "$user_id")
               ->orwhere("client_id", "like", "$client_id");})->get();

 dump($modal->count()); // count display

希望有帮助。

答案 1 :(得分:1)

您可以在下面这样做。

  Model::where(function($q) { 
         $q->where('user_id','LIKE','%'.$q.'%')
          ->orWhere('client_id','LIKE','%'.$q.'%')
          ->orWhere('start_time','LIKE','%'.$q.'%')
          ->orWhere('end_time','LIKE','%'.$q.'%');
    });

希望有帮助。

答案 2 :(得分:1)

如果已设置一个或另一个变量,则可以使用when和filter:

Model::when(isset($client_id),function($query) use ($client_id) { 
        $query->where('client_id','=', $client_id)
     })
     ->when(isset($user_id),function($query) use ($user_id) { 
        $query->where('user_id','=', $user_id)
     })
     ->when(isset($start_time),function($query) use ($start_time) {
        $query->where('start_time','=',$start_time)
     })
     ->get();