Die*_*des 4 php laravel eloquent laravel-5
我在使用 Laravel 5 和 Eloquent 时遇到问题。我有 3 个模型,分别称为 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 {...}
Run Code Online (Sandbox Code Playgroud)
在我的 Ad Class 中,我有一个名为 title 的方法,它使用了所属关系关系,如下所示:
public function title()
{
return $this->engineAd->engine->title;
}
Run Code Online (Sandbox Code Playgroud)
对于第一个关系 Ad -> AdEngine,我使用预先加载来获取所有 AdEngine:
$ads = Ad::with('engineAd');
Run Code Online (Sandbox Code Playgroud)
但是对于关系 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
Run Code Online (Sandbox Code Playgroud)
谢谢。
您也可以使用with()使用嵌套关系:
$ads = Ad::with(['engineAd', 'engineAd.engine']);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2791 次 |
| 最近记录: |