【发布时间】:2018-06-15 18:25:38
【问题描述】:
我正在尝试消除我网站上不必要的查询,但我正在努力解决急切加载和延迟加载问题。我网站上的所有用户都有列表,列表有多个用户。它们通过表listing_users 连接。然后,每个列表都有一个与之关联的“订单”。这是用户模型:
用户模型:
public function listings(){
return $this->belongsToMany(Listing::class)->withPivot('role_id');
}
上市模式:
public function order(){
return $this->hasOne(Order::class)->first();
}
我当前的仪表板是通过在 UserController 中调用这个 viewListings 来加载的:
public function viewListings(){
$user = Auth::user();
$listings = $user->listings()->orderBy('created_at','desc')->get();
return view('user.listings', compact('listings'));
}
问题出现在我的刀片视图 user.listings 中,其中每个列表都有一个 foreach 循环,然后也调用每个订单。我需要一种将列表及其相关订单传递到页面的方法。
@foreach($listings as $listing)
@if($listing->order()->status == 'completed')
{{-- Display the listing details here --}}
@endif
@endforeach
对于上述情况的任何建议将不胜感激!我确信有一个我忽略的简单 Laravel 解决方案。
【问题讨论】:
标签: php laravel eloquent lazy-loading eager-loading