2017-02-14 4 views
1

Slim 3ベースのアプリケーションでEloquent関係に問題があります。目標は、表示する$データを返すことです。Slim 3 with Eloquent ORM - コレクションにリレーションシップがありません

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;  

が、私はエラーを取得しています:私はことをしようとすると プロパティ[オファー]このコレクションのインスタンスに存在しません。 (URL欄付き)オファーや(offer_url列を持つ)お気に入り:私たちはテーブルを見ることができるデータベースで

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'); 
} 

: は、私は私のオファーでの関係やお気に入りのモデルを作りました。

どのように関係を動作させるには?

お願いします。

答えて

1

Getメソッドは、Favoriteではなく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

関連する問題