2017-06-06 5 views
1

私は現在使用しているモデルからの直接の関係がないテーブルからデータを取得しようとしています。特定のケースでLaravelの雄弁なhasManyThrough関係を使用できますか?

マイデータ構造:

表:投稿

  • ID - 整数
  • タイトル - 文字列

表:post_stacks

  • ID - 整数
  • post_idの - 整数
  • stack_id - 整数

表:スタック

  • ID - 整数
  • ボディ - 文字列
  • URL - 文字列

私の雄弁なモデルがPost.php(ポスト表)からのものであり、私は、スタックから(私のポストに関連するすべてのスタックを取得しようとしています表)。 Post.phpだけで、ピボットテーブル(post_stacks)ではなく、私の関係を宣言したいと思います。私はhasManyThroughを使ってみましたが、動作させることができませんでしたか?

public function img() 
    { 
     return $this->hasManyThrough(\App\Stack::class, \App\PostStack::class, 'post_id', 'stack_id', 'id'); 
    } 

希望のデータをどのように取得することができますか?ありがとう!

答えて

1

あなたの投稿モデルに以下の関係を入れてみることはできますか?

public function stacks() 
{ 
    return $this->hasManyThrough(
     'App\Stacks', 'App\PostStacks', 
     'post_id', 'id', 'id' 
    ); 
} 

はまた、このドキュメントによれば、これを見て、https://laravel.com/docs/5.4/eloquent-relationships#has-many-through

を持って、hasManyThroughで3番目の引数は、中間モデルの外部キーの名前です。私たちの場合、'post_id'post_stackの外部キーで、postsと直接の関係があります。

第4引数は、最終モデルの外部キーの名前です。すなわち、'id'stacksです。その関係はpost_stacks('post_id')です。第5引数はローカルキーです。すなわち、投稿のid

関連する問題