【发布时间】:2017-03-29 15:15:08
【问题描述】:
我有一个简单的相册和图片设置,每个相册都有很多图片。我可以很好地获取所有数据,但我想将返回的图像数量限制为 3。我尝试过像这样传递闭包:
Album::with(['images' => function($query) { $query->take(3);}])->get();
这确实将图像数量限制为 3 个,但将图像总数限制为 3 个,但我想将每个相册限制为 3 个图像。因此,第一个相册将按预期显示 3 张图片,但所有其他相册都没有图片。
我尝试向我的模型添加一个新方法,如下所示:
public function limitImages()
{
return $this->hasMany('App\Image')->limit(3);
}
我在我的控制器中调用它:
Album::with('limitImages')->get();
但这并不限制返回的图像数量
【问题讨论】:
-
您是否尝试在第一次关闭尝试中使用
$query->limit(3),而不是take(3)? -
是的,我已经尝试在控制器和模型中交换 limit() 和 take(),但它仍然可以正常工作。返回第一张专辑的 2 张图片,其余专辑没有图片
-
同样的情况。这是一个有趣的问题!
-
你使用的是什么版本的 Laravel?
-
这是昨天的 5.4 新副本(只是玩弄它不是一个严肃的项目)