我遇到了一个Laravel Eloquent查询的问题,我试图在with()
方法中使用take()
方法来限制相关记录的加载。但是,查询没有加载预期数量的相关记录。
我遇到的问题是,这段代码只检索第一个类别的前6篇文章,并且它不会为每个类别加载多达6篇文章,即使每个类别有数百篇文章。
代码示例:
我有两个雄辩的模型:Category
和Article
。每个Category
有许多Article
记录,我想加载到每个类别6篇文章。下面是我使用的代码:
$categories = Category::with(['articles' => function ($query) {
$query->take(6);
}])->get()->toArray();
Category.php
public function articles()
{
return $this->hasMany(Article::class);
}
我检查的内容:
- 我已经验证了每个类别都有超过6篇与之相关的文章。
- 我已经确保在我的代码中没有其他约束或过滤器应用于结果集。
- 数据库架构似乎定义了正确的关系。
预期成果:
我希望查询为每个类别加载最多6篇文章,而不仅仅是第一个类别的前6篇文章。
Laravel版本:10.0
1条答案
按热度按时间a0x5cqrl1#
安装
eloquent-eager-limit
https://github.com/staudenmeir/eloquent-eager-limitcomposer require staudenmeir/eloquent-eager-limit:"^1.0"
包括
HasEagerLimit
特征。像往常一样限制你的急切加载。