我在基于Slim 3的应用程序中存在Eloquent关系问题。目标是返回要查看的$ data。当我尝试:
use App\Models\Favorite as F;
$favs = F::where('user_id',$_SESSION['user_id'])->get()->offer;
foreach($favs as $offer)
{
// not important now...
}
return $data;
我收到错误: 此集合实例上不存在Property [offer]。 我在我的优惠和收藏模特中建立了关系:
public function offer() // in Favorite model
{
return $this->belongsTo('App\Models\Offer', 'offer_url');
}
public function favorite() // in Offer model
{
return $this->hasMany('App\Models\Favorite', 'url');
}
在数据库中,我们可以看到表:商品(带有网址列)和收藏夹(带有offer_url列)。
如何使这种关系发挥作用?
请求帮助。
答案 0 :(得分:1)
Get方法返回Collection实例,而不是收藏夹。
使用:
$favs = F::where('user_id', $_SESSION['user_id'])->get();
然后:
foreach($favs as $favorite) {
$offer = $favorite->offer;
}
并且不要忘记使用热切的装载机:https://laravel.com/docs/5.4/eloquent-relationships#lazy-eager-loading