Вопрос о предельном множественном числе отношений - PullRequest
0 голосов
/ 12 октября 2018

У меня есть 3 страницы коллекции, сообщения, комментарии и отношение

pages => hasmany => posts => hasmany => комментарии

отношение модели страницы

public function posts()
{
    return $this->hasMany('App\Models\PostsModel', 'page_id');
}

отношение модели сообщений

public function comments()
{
    return $this->hasMany('App\Models\CommentsModel', 'post_id')->limit(10);
}

Запрос

PagesModel::with('posts.comments')->get();

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

Любое решение или лучший подход.Спасибо

Ответы [ 2 ]

0 голосов
/ 28 октября 2018

В Laravel нет собственной поддержки.

Я создал для него пакет: https://github.com/staudenmeir/eloquent-eager-limit

Используйте черту HasEagerLimit как в родительской, так и в связанной модели.

class PostsModel extends Model {
    use \Staudenmeir\EloquentEagerLimit\HasEagerLimit;
}

class CommentsModel extends Model {
    use \Staudenmeir\EloquentEagerLimit\HasEagerLimit;
}

Тогда вы можете применить ->limit(10) к вашим отношениям.

0 голосов
/ 12 октября 2018

Это общий вопрос, на который нет простого ответа.Прочитайте https://softonsofa.com/tweaking-eloquent-relations-how-to-get-n-related-models-per-parent/ для объяснения

...