如何在laravel查询生成器中添加和排除where()子句
如何在laravel查询生成器中添加和排除where子句,以便在一种情况下将其添加到另一种情况下如何在laravel查询生成器中添加和排除where()子句,laravel,Laravel,如何在laravel查询生成器中添加和排除where子句,以便在一种情况下将其添加到另一种情况下 $orders = DB::table('orders')->select( 'orders.id as id', 'orders.created_at as created', 'u.email as email', 'ud.id as data_id', 'ud.firstName as firstName', 'ud.lastName as lastNa
$orders = DB::table('orders')->select(
'orders.id as id',
'orders.created_at as created',
'u.email as email',
'ud.id as data_id',
'ud.firstName as firstName',
'ud.lastName as lastName',
'ud.phone as phone',
's.name as service',
's.id as service_id',
'pt.id as payment_type_id',
'pt.name as payment_name')
->join('users as u', 'orders.user_id', '=', 'u.id')
->join('user_data as ud', 'u.id', '=' ,'ud.user_id')
->join('payment_types as pt', 'orders.payment_type_id', '=', 'pt.id')
->join('services as s', 'orders.service_id', '=', 's.id')
->where('u.id', $user->id)->orderBy($sortBy, $type)->get();
我想这样做
$order = DB::table()....
if(true){
$order->where('id', '=', 1);
}
$order->orderBy('fieldname', 'asc')->get();
但是上面的例子对于您可以使用的条件从句不返回任何结果 when方法仅在第一个 参数为true。如果第一个参数为false,则闭包将 不能执行
$order = DB::table()
->yourQuery(...)
->when($var, function ($query, $var) { // <----
return $query->where('id', '=', 1); // <----
} // <----
->orderBy('fieldname', 'asc')
->get();
$role = $request->input('role');
$users = DB::table('users')
->when($role, function ($query, $role) {
return $query->where('role_id', $role);
})
->get();