我有一个关于Laravel 5和Eloquent的问题。我有三个模型:Ad、AdEngine和Engine:
class Ad
{
...
public function engineAd()
{
return $this->belongsTo('App\Models\EngineAd', 'engine_ad_id', 'id');
}
...
}
class EngineAd
{
...
public function engine()
{
return $this->belongsTo('App\Models\Engine', 'engine_id', 'id');
}
...
}
class Engine {...}
在我的广告类(Ad Class)中,我有一个名为title的方法,它使用了belongsTo关系,如下所示:
public function title()
{
return $this->engineAd->engine->title;
}
对于第一个关系 Ad -> AdEngine,我使用了急切加载来获取所有的 AdEngine:
$ads = Ad::with('engineAd');
但是对于 AdEngine -> Engine 的关系,Laravel 每次迭代都会生成额外的查询,请问我能否在这里使用预加载或类似的东西?
select * from `engine` where `engine`.`id` = '1' limit 1
select * from `engine` where `engine`.`id` = '2' limit 1
select * from `engine` where `engine`.`id` = '3' limit 1
感谢。