twi*_*igg 2 php laravel eloquent
我有一个简单的相册和图像设置,每张专辑都有很多图像.我可以获得所有数据,但我想将返回的图像数量限制为3.我尝试传递一个闭包,如下所示:
Album::with(['images' => function($query) { $query->take(3);}])->get();
Run Code Online (Sandbox Code Playgroud)
这确实将图像数量限制为3,但它将图像总数限制为3,但我想将每个相册限制为3个图像.因此,第一张专辑将按预期显示3张图像,但所有其他专辑都没有图像.
我试过在我的模型中添加一个新方法,如下所示:
public function limitImages()
{
return $this->hasMany('App\Image')->limit(3);
}
Run Code Online (Sandbox Code Playgroud)
我在我的控制器中调用它:
Album::with('limitImages')->get();
Run Code Online (Sandbox Code Playgroud)
但这并不限制返回的图像数量
我觉得你很快就遇到了N + 1问题,试图做到这一点.只需在它返回的集合中执行:
Album::with('images')->get()->map(function($album) {
$album->setRelation('images', $album->images->take(3));
return $album;
});
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
1561 次 |
最近记录: |