我有一个Laravel 5视图,我想知道在视图中使用模型关系实际上是一件好事,关于性能。
假设Car模型与挡风玻璃具有一对一的关系。
<div class="col-lg-4">
<div class="form-group">
<label class="col-lg-4 control-label">Windshield Model</label>
<div class="col-lg-8">
<p class="form-control-static">{{$car->windshield->model}}</p>
</div>
</div>
</div>
<div class="col-lg-4">
<div class="form-group">
<label class="col-lg-4 control-label">Windshield Height</label>
<div class="col-lg-8">
<p class="form-control-static">{{$car->windshield->height}}</p>
</div>
</div>
</div>
我的问题是,每次我做$ car-&gt; windshield-&gt; someProperty Eloquent执行查询。这是一件好事吗?我的意思是,性能呢? 如果我想显示汽车挡风玻璃的n个属性,Eloquent将执行N个查询,对吧?
答案 0 :(得分:3)
我认为这不是一个好主意,因为它是一种反MVC模式。此外,我不确定缓存在这种情况下是否会正常工作等。
要解决N + 1问题,您应该使用Eager loading:
https://laravel.com/docs/5.1/eloquent-relationships#eager-loading
答案 1 :(得分:1)
您展示的代码正是应该是的。
如果您在控制器中使用它,$ awk '{a=split($0,t,/[aouöüeiáóúőűéí]+/); print $0, a-1, (a>2?"poly":"mono")"syllabic"}' file
könyvtaár 2 polysyllabic
könyvter 2 polysyllabic
hozzászóles 4 polysyllabic
mű 1 monosyllabic
cikk 1 monosyllabic
ős 1 monosyllabic
$ awk '{t=$0; a=gsub(/[aouöüeiáóúőűéí]+/,"",t); print $0, a, (a>1?"poly":"mono")"syllabic"}' file
könyvtaár 2 polysyllabic
könyvter 2 polysyllabic
hozzászóles 4 polysyllabic
mű 1 monosyllabic
cikk 1 monosyllabic
ős 1 monosyllabic
查询仍然存在。
正如在另一个答案中所提到的,您必须遵守急切负载以避免N
。
https://laravel.com/docs/5.2/eloquent-relationships#eager-loading