Laravel DB :: RAW сингл сингл

Я использую RAW Query в Laravel. Потому что это немного сложно сделать с помощью построителя запросов или Eloquent.

Я запрашиваю базу данных на 1 человека, используя где на его имя.
Возвращаемый результат — массив с объектом в нем.
(см. скриншот)

введите описание изображения здесь

Как бы я получил только первый результат? я пытался

return $data['person'] = DB::select(DB::raw($person))[0];

что дает мне следующую ошибку:
Содержимое Ответа должно быть строкой или объектом, реализующим __toString (), заданный «объект».

return $data['person'] = DB::select(DB::raw($person))->first();

что говорит мне, что сначала не применимо для этого вида запроса ..

Это запрос

SELECT nickname, firstname, lastname, age, title, photo, companies.name, cities.name, trickshot
FROM persons
JOIN companies ON companies.id = persons.company_id
JOIN cities ON cities.id =  companies.city_id
WHERE CONCAT(firstname, lastname) = '{$fullname}' AND cities.name = '{$city}'

Спасибо!

1

Решение

Вот как вы делаете это в Eloquent, если Person модель вам нужна:

Person::select( ... , 'comp.name as company', 'cit.name as city')
->join('companies as comp', 'comp.id', '=', 'persons.company_id')
->join('cities as cit', 'cit.id', '=', 'comp.city_id')
->where('cit.name', $city)
->where(DB::raw('concat(firstname, lastname)'), $fullname)
->first();

Если вам нужен этот набор данных чаще, я бы вместо этого создал представление БД для этого.

1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]