我有一个问题,因为当我在变量$ name =" firstname lastname"时,我什么也没得到,但如果我只输入名字或只输入姓氏,我会得到结果。我想检查两个列,以便当用户输入firstname lastname以获取firstname lastname的用户时。有什么建议吗? 我有这个问题:
$q->orWhere('first_name','like','%' .$name . '%')->orWhere('last_name','like','%' . $name . '%');
我用联盟尝试了这个:
$q->orWhere('first_name','like','%' .$name . '%')->union('last_name','like','%' . $name . '%');
但是我收到了这个错误:
在字符串
上调用成员函数getBindings()
答案 0 :(得分:1)
名称可以只是一个单词或三个单词,因此您需要首先explode()
字符串然后添加条件:
$user = User::query();
$nameArray = explode(' ', trim($name));
foreach ($nameArray as $nameSegment) {
$user->orWhere('first_name', 'like', '%'.$nameSegment.'%');
->orWhere('last_name', 'like', '%'.$nameSegment.'%');
}
$user->get();