使用L5我有一个“汽车”模型和一个“品牌”模型。
在我的品牌模型中,我与Car有一个hasMany关系,因此我可以if A1 = "1" {
filter (A70:D73;E70:E73="A")
}
if A1 = "2" {
filter (A70:D73;F70:F73="B")
}
获取该品牌数据库中的所有汽车。
这很好用,但我永远不需要返回所有这些,我将永远过滤,限制或迭代它们。
在我的控制器中,我可以$brand->cars
,它正确地返回20个结果,但是检查mysql查询我可以看到查询本身没有“限制”,当你有数百万可能时,它似乎相当密集结果
有没有办法直接迭代和限制关系,或者只是我只是放弃关系并直接使用eloquent:
$brand->cars->take(20)
答案 0 :(得分:1)
您正在寻找Eager loading。
Brand::with('cars')->take(20)->get();
如果您需要根据任何字段过滤汽车,例如'year':
Brand::whereHas('cars', function($q) use($year)
{
$q->where('year', '>', $year);
})->with('cars')->take(20)->get();
答案 1 :(得分:0)
是的,您可以使用:
$brand->cars()->take(20)->get();