我有一个简单的相册和图片设置,每个相册都有很多图片。我可以很好地获取所有数据,但我想将返回的图像数量限制为 3。我尝试过像这样传递闭包:
Album::with(['images' => function($query) { $query->take(3);}])->get();
这确实将图像数量限制为 3,但它将图像总数限制为 3,但我想将每个相册限制为 3 个图像。所以第一个相册将按预期显示 3 张图片,但所有其他相册都没有图片。
我尝试向我的模型添加一个新方法,如下所示:
public function limitImages()
{
return $this->hasMany('App\Image')->limit(3);
}
我在我的 Controller 中调用它:
Album::with('limitImages')->get();
但这根本不限制返回的图像计数
最佳答案
我觉得你会很快遇到 N+1 问题试图完成这个。只需在它返回的集合中执行此操作:
Album::with('images')->get()->map(function($album) {
$album->setRelation('images', $album->images->take(3));
return $album;
});
关于php - Laravel Eloquent 关系的限制结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43097559/