如何在 laravel 中有条件地编写查询?
How to write a query conditionally in 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 Illuminate\Support\Arr;
// ...
$query = DB::table(...);
$data = $query
->whereIn('my_field', Arr::wrap($field))
->get();
PS: 我已将相关功能链接到文档,以便您了解它们的工作原理和参数。
我是 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 Illuminate\Support\Arr;
// ...
$query = DB::table(...);
$data = $query
->whereIn('my_field', Arr::wrap($field))
->get();
PS: 我已将相关功能链接到文档,以便您了解它们的工作原理和参数。