Запрос связаных таблиц Mysql PHP Laravel?

Доброго времени суток, суть вопроса вот в чем:
Как получить данные из связанной таблице, вернее как это правильнее сделать?
Допустим есть Таблица Posts он связана по user_id с таблицей Users,
Предположим что, выводится 50 постов, к каждому посту хочу вывести информацию о авторе поста. там имя аватарку и еще что нибудь. В голову приходит только делать запрос на получение постов, и потом при выводе каждого поста делать запрос на автора. Это получается 51 запрос к базе. Понимаю что можно это сделать джойном, но запрос к базе и так сложный, стоит ли добавлять к нему еще и джойн?
вот сам запрос постов:
$userId =1;
$posts = DB::select('
(
SELECT * FROM posts
WHERE group_id IN ( SELECT group_id FROM groups_members WHERE user_id = ? )
OR user_id IN (  SELECT friend_id FROM friends WHERE user_id = ?  )
OR user_id=?
)ORDER BY created_at DESC LIMIT 0, 50',
 [$userId, $userId, $userId]);

И как это можно реализовать в ларавел
  • Вопрос задан
  • 4874 просмотра
Решения вопроса 1
@vladflip
me
использовать отношения Eloquent

// Post.php
class Post extends Eloquent
{
    protected $table = 'posts'; // имя таблицы

    public function user() {
       return $this->belongsTo('User', 'user_id');
    }
}

//  User.php
class User extends Eloquent
{
    protected $table = 'users'; // имя таблицы

    public function posts() {
        return $this->hasMany('Post', 'user_id');
    }
}

Post::with('user')->get(); // вернет одним запросом посты со своими юзерами
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 2
@Nc_Soft
Нужно просто почитать доку laravel.com/docs/4.2/eloquent#eager-loading
Ответ написан
Комментировать
65536
@65536
with
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы