2016-11-19 9 views
1

私はLaravel 5.3を使用しています。Laravel belongsToは特定のFKでも動作しません

Model ad : 
---------------- 
class Ad extends Model 
{ 
    protected $table = 'ads'; 

    protected $primaryKey = 'ad_id'; 

    public function category() 
    { 
     return $this->belongsTo(Category::class, 'cat_id', 'cat_id'); 
    } 
} 

そして

Model category : 
----------------- 
class Category extends Model 
{ 
    protected $table = 'categories'; 

    protected $primaryKey = 'cat_id'; 

    public function ads() 
    { 
     return $this->hasMany(Ad::class); 
    } 
} 

そして、私のDB構造は次のとおりです:

は、私は2つのテーブルと2つのモデル(広告やカテゴリを)持っている

ads: 
    ad_id - 
    ad_name 
    ad_status 
    cat_id 

categoriess: 
    cat_id - 
    cat_name 

私は本当にしないでください理由を知っているが、私はこれを私のリポジトリで使うことの関係を得ることができない:

return $this->model 
     ->select('ad_id', 'ad_name') 
     ->where('ad_status', '=', 1) 
     ->with('category'); 

クエリは正常ですが、私はadの情報を持っていますが、関係は空です。私は、両方のテーブルにcat_idが存在することを確認しました。

私は何かを見逃しましたか?

答えて

1

あなたはそれを動作させるためにselect()cat_idキーを追加する必要があります。

return $this->model 
    ->select('ad_id', 'ad_name', 'cat_id') 
    ->where('ad_status', 1) 
    ->with('category') 
    ->get(); 

このキーを追加していないよ場合は、関係は常にnullになります。また、get()を使用してデータを取得します。

+2

ああ!あなたに感謝!私はこれを期待していなかった...私は、私が推測する文書でこれを逃した。 –

+1

これはドキュメントでは見つかりません。それが助けてくれてうれしい。 ) –

+0

@VincentDecauxあなたは '$ this-> model-> with()'を使うこともできます。 – xhulio

関連する問題