我是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:我已经将相关函数链接到文档,这样你就可以知道它们是如何工作的以及它们的参数。