Дублирование сущности в запросе на присоединение с помощью Query Builder

Я использую конструктор запросов Laravel с таким синтаксисом:

$article = DB::table('users')->join('articles', 'articles.id', '=', 'users.id')->where('article_id', $id)->first();

Вы можете видеть, что и статьи, и таблица пользователей имеют столбец id. Затем, на мой взгляд, я использую результат запроса и получаю только один id, тогда как мне нужны оба.

Есть ли способ получить их?

Я знаю, что мог бы использовать:

->select('articles.id as myFirstId', 'users.id as mySecondId', 'users.name', ...)

Но в этом запросе много столбцов, и если я могу избежать этого, я бы предпочел.

Спасибо, Рафаэль Н.


person Fractaliste    schedule 20.11.2013    source источник


Ответы (1)


Вы можете выбрать все поля из таблицы с большим количеством полей с помощью * FROM table, а затем выбрать одно за другим из другой таблицы, например:

$article = DB::table('users')
            ->join('articles', 'articles.id', '=', 'users.id')
            ->where('article_id', $id)
            ->select('articles.*', 'users.id as userId', 'users.name') // Add rest of `users` fields
            ->first();
person Manuel Pedrera    schedule 21.11.2013
comment
Спасибо, это работает хорошо. В документации должно быть больше примеров такого рода. - person Fractaliste; 21.11.2013