Я использую laravel-eloquent и хочу вернуть коллекцию, которая объединяет несколько таблиц. Сейчас я делаю это с помощью метода соединения с построителем запросов, но я бы хотел остаться в рамках eloquent. Я имею в виду, я уже определил все свои отношения, почему я должен постоянно писать соединения с внешними ключами?
Например, если я определил свои модели следующим образом:
<?php
namespace App;
use Illuminate\Database\Eloquent\Model;
class User extends Model
{
public function comments()
{
return $this->hasMany('App\Comments');
}
}
<?php
namespace App;
use Illuminate\Database\Eloquent\Model;
class Comment extends Model
{
public function user()
{
return $this->belongsTo('App\User');
}
}
и хочу вернуть все комментарии с именами пользователей, а пока я бы написал так:
DB::table('users')->select('users.name', 'comments.body')
->join('comments', 'users.id', '=', 'user_id')
->get();
Я пытался написать
$users = new 'App\User';
$users->with('comments')
->select('name', 'comments.body');
но это не сработало. Нужно ли определять новую коллекцию? Я получу много, много коллекций, если я сделаю это ...