如何在laravel查询中创建条件检查

如何在laravel查询中创建条件检查,laravel,query-builder,Laravel,Query Builder,您好,我们如何在laravel查询生成器中实现条件检查 $flag_email =true; $query = DB::table('customer'); if($flag_email) { $query->where('email','=',$email); } if(!$flag_email) { $query->where('mobile','=',$email); } $query->get(); 你可以这样试试。这种方式将输

您好,我们如何在laravel查询生成器中实现条件检查

$flag_email =true;    
$query = DB::table('customer');

if($flag_email) {
    $query->where('email','=',$email);
}

if(!$flag_email) {
    $query->where('mobile','=',$email);     
}

$query->get();

你可以这样试试。这种方式将输出你的愿望之一。这只是一种方式,我不确定,这是正确的方式

$flag_email =true;    
$query = DB::table('customer');  

if($flag_email)
$query = $query->where('email','=',$email);  

if(!$flag_email)
$query = $query->where('mobile','=',$email);   

$result= $query->get();

你可以这样试试。这种方式将输出你的愿望之一。这只是一种方式,我不确定,这是正确的方式

$flag_email =true;    
$query = DB::table('customer');  

if($flag_email)
$query = $query->where('email','=',$email);  

if(!$flag_email)
$query = $query->where('mobile','=',$email);   

$result= $query->get();
您可以使用->何时执行条件检查

$query = DB::table('customer')
->when($flag_email, function ($query, $email) {
      return $query->where('email', $email);
})
->when(!$flag_email, function ($query, $email) {
      return $query->where('mobile', $email);
})->get(); 
您可以使用->何时执行条件检查

$query = DB::table('customer')
->when($flag_email, function ($query, $email) {
      return $query->where('email', $email);
})
->when(!$flag_email, function ($query, $email) {
      return $query->where('mobile', $email);
})->get(); 
在此处使用when方法检查条件

在此处使用when方法检查条件


营救三元操作员:

$query = DB::table('customer')->where($flag_email?'email':'mobile',$email);

营救三元操作员:

$query = DB::table('customer')->where($flag_email?'email':'mobile',$email);

我想我们不需要第一个分号,但是我在调试时没有在绑定中获得email值。因此,我必须将上述代码更改为$users=DB::table'users'->where'otp','=',$otp->when$email,function$users,$email{return$users->where'email',$email;}->when$mobile,function$users,$mobile{return$users->where'mobile',$mobile;}使用$flag_email,我们无法获得email和mobile的绑定值->when$flag_email,函数$query,$email{return$query->where'email',$email;}这是正确的,不需要commaI,我想我们不需要第一个分号,但是我在调试时没有在绑定中获得email值。因此我必须将上面的代码更改为$users=DB::table'users'->where'otp','=',$otp->when$email,function$users,$email{return$users->where'email',$email;}->when$mobile,function$users,$mobile{return$users->where'mobile',$mobile;}使用$flag\u email,我们无法获得email和mobile的绑定值->when$flag\u email,function$query,$email{return$query->where'email',$email;}这是正确的,不需要commaHey,伙计,这是一个语法错误,应该是这样的```$query=DB::table'customer'->when$flag\u email,function$query,$email{return$query->where'email',email;},function$query{return$query=DB->where'mobile',email;}->get;```嘿,伙计,这是一个语法错误,应该是这样的``$query=DB::table'customer'->当$flag\u email,函数$query,$email{return$query->where'email',where'email;},函数$query{return$query->where'mobile',email;}->get```