我有3个收藏页,帖子,评论和相关信息
页面=> hasmany =>帖子=> 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条评论, 但它会跳过结果。许多帖子有多条评论,但无法获得评论。
任何解决方案或更好的方法。谢谢
答案 0 :(得分:0)
这是一个常见问题,没有简单的答案。阅读https://softonsofa.com/tweaking-eloquent-relations-how-to-get-n-related-models-per-parent/以获得解释
答案 1 :(得分:0)
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)
应用于您的关系。