从关系返回的Laravel 5 Iterate和Limit模型

时间:2015-05-21 13:42:24

标签: php laravel eloquent laravel-5

使用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)

2 个答案:

答案 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();