如何检查多列?

时间:2017-01-18 09:37:35

标签: laravel laravel-5 laravel-5.2

我有一个问题,因为当我在变量$ 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()

1 个答案:

答案 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();