2016-03-30 2 views
0

Я пытаюсь написать этот запрос MySQL в Laravel:MySQL CONCAT() в Laravel 5,2

SELECT * FROM users WHERE CONCAT(firstName, ' ', lastName) LIKE '%John%'

Идея заключается в том, что записи с либо firstName или lastName из John будут возвращены

Вещи, которые я пробовал:

.

$users = User::whereRaw("(CONCAT(users.firstName, ' ', users.lastName) like '%John%')");

ОшибкаThe Response content must be a string or object implementing __toString(), "boolean" given.

.

$users = User::whereRaw("(CONCAT(users.firstName, ' ', users.lastName) like '%?%')",[$search])->get();

Возвращает []

.

$users = User::whereRaw("(CONCAT(users.firstName, ' ', users.lastName) like ?)",[$search])->get();

Возвращает []

+1

Вы можете попытаться сбросить свой необработанный sql с помощью 'User :: whereRaw (" (CONCAT (users.firstName, '', users.lastName) как?) ", [$ Search]) -> toSql() 'и найти ошибку – xAoc

+0

Спасибо, @xAoc Я посмотрел на сгенерированный SQL и сделал некоторый прогресс. – Joseph

ответ

0

После изучения SQL (спасибо @xAoc!) Я понял, что SQL генерируется путь неправильный.

Это, кажется, генерировать правильный SQL:

return User::whereRaw("(CONCAT(users.firstName, ' ', users.lastName) like '%$search%')")->get();

+0

Рад помочь вам;) – xAoc

0

свою работу для меня, вы можете попробовать это:

$search = 'John Smith'; 
$users = User::whereRaw("(CONCAT(first_name, ' ', last_name) like '%$search%')")->get(); 

выход выглядеть:

Collection {# 573 ▼ # элементов: массив: 13 [▶] }