带有Eloquent ORM的Slim 3 - 集合中不存在关系

时间:2017-02-14 20:02:06

标签: php mysql eloquent relational-database

我在基于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列)。

如何使这种关系发挥作用?

请求帮助。

1 个答案:

答案 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