Laravel объединение двух таблиц, не соответствующих столбцам с одинаковым именем - PullRequest
0 голосов
/ 15 марта 2020

У меня есть 2 таблицы -

пользователей (идентификатор, учреждение_ид, имя ...)

заведения (идентификатор, район_ид, имя, ...)

I хочу, чтобы все пользователи с district_id = 1. Я не использую красноречивые отношения ни в одной модели.

Я пробовал как

$users = User::join('establishments', 'establishments.id', '=', 'users.establishment_id')->where('district_id', '=', $admin_district_id)->where('is_active', '=', 1)->paginate(3);

, но вместо имени пользователя возвращается имя учреждения.

Ответы [ 2 ]

0 голосов
/ 15 марта 2020

Я решил это с -

$users = User::join('establishments', 'establishments.id', '=', 'users.establishment_id')->where('district_id', '=', $admin_district_id)->where('is_active', '=', 1)->select(array('users.*'))->paginate(3);
0 голосов
/ 15 марта 2020

Это потому, что имя столбца для name является неоднозначным.

Один из вариантов - явно указать псевдоним для имени пользователя как user_name

$users = User::join('establishments', 'establishments.id', '=', 'users.establishment_id')
->select('users.name AS user_name', 'establishments.name AS establishment_name', 'users.*', 'establishments.*')
->where('district_id', '=', $admin_district_id)
->where('is_active', '=', 1)
->paginate(3);

Чтобы users table name вы Теперь пользователь user_name

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...