如何在laravel中有条件地编写查询



我是laravel的新手,我根据条件连接三个表,每件事都很好,但如果$field是数组,我需要有条件地写,它应该用whereIn运行,否则它应该运行where条件,你能帮我实现吗

//$field sometimes it's an array sometimes it's a string.
public function find($field){

}

对于条件约束,可以使用when()子句:

$query = DB::table(...);
$data = $query
->when(is_array($field), function ($query) use ($field) {
$query->whereIn('my_field', $field);
}, function ($query) use ($field) {
$query->where('my_field', $field);
})
->get();

现在,作为一个提示,您可以这样做:将$fields变量包装到一个数组中,然后始终使用whereIn子句。您可以通过Arr::wrap()功能实现这一点:

use IlluminateSupportArr;
// ...
$query = DB::table(...);
$data = $query
->whereIn('my_field', Arr::wrap($field))
->get();

PS:我已经将相关函数链接到文档,这样你就可以知道它们是如何工作的以及它们的参数。

最新更新