【问题标题】:Slim 3 with Eloquent ORM - Relationships not exist on collection带有 Eloquent ORM 的 Slim 3 - 集合中不存在关系
【发布时间】:2017-02-14 20:02:06
【问题描述】:

我的基于 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;       

我收到一个错误: 此集合实例上不存在属性 [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');
}

在数据库中,我们可以看到表格:优惠(带有 url 列)和收藏夹(带有 offer_url 列)。

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

请帮忙。

【问题讨论】:

    标签: php mysql eloquent relational-database


    【解决方案1】:

    Get 方法返回一个 Collection 实例,而不是 Favorite。

    使用:

    $favs = F::where('user_id', $_SESSION['user_id'])->get();
    

    然后:

    foreach($favs as $favorite) {
       $offer = $favorite->offer;
    }
    

    别忘了使用 Eager loader:https://laravel.com/docs/5.4/eloquent-relationships#lazy-eager-loading

    【讨论】:

      猜你喜欢
      • 2016-02-04
      • 1970-01-01
      • 2017-03-16
      • 1970-01-01
      • 2015-10-29
      • 1970-01-01
      • 2014-12-27
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多