2016-04-13 65 views
2

私はLaravelの関係モデルについての質問がありlaravel関係モデル

comment table  id post_id 

post table   id author_id 

author table   id name 
私は、どのようにポストテーブルを通じてコメントモデルの作成者の名前を取得するために、関係モデルを使いたい

これを実現する。どうもありがとう。

答えて

0

投稿とユーザーの間にhasMany関係を作成する必要があります。

Postモデル::

// A post can have 1 author 
public function author() { 
    return $this->belongsTo('App\User'); 
} 

Userモデル:

// A user can have multiple posts 
public function posts() { 
    return $this->hasMany('App\Post'); 
} 
+0

は –

2

Laravel中関係が実装するために、かなりまっすぐ進むであり、実際にあるあなたがモデルで、この関係の機能を記述する必要があり、これを行うために、表現力豊かなAPIのために理解しやすい。だからあなたの場合には、ロジックはこのようになります:

コメントポストに属し、ポストだからあなたはCommentを持って考慮著者

に属し、 PostおよびAuthorモデルでは、それぞれに上記のロジックを反映する関係メソッドが定義されている必要があります。


Commentモデルは次のようになります。

class Comment extends Model 
{ 
    public function post() 
    { 
     return $this->belongsTo(Post::class); 
    } 
} 

そしてPostモデルは次のようになります。

class Post extends Model 
{ 
    public function author() 
    { 
     return $this->belongsTo(Author::class); 
    } 
} 

その後、あなたは簡単にそれらの関係を経由して投稿者名にアクセスすることができます:

Comment::find(1)->post->author->name; 

上記のコードからわかるように、メソッド名が実際に示唆的なので、関係のコードを書くのは非常に簡単です。 Laravel DocumentationのEloquent Relationshipsの詳細を読むことができます。

+0

が、私はあなたがあなたが非常に歓迎している –

+0

step.thanks従って解決し、どうもありがとうございました、ありがとうございました。 – Bogdan

0
class Post extends Model 
{ 
    public function author() 
    { 
     return $this->belongsTo(Author\class)->select('name'); 
    } 
} 

Comment::with('author')->find(1); 

in blade 

{{$comment->auther['name']}} 
+0

回答には適切な説明が必要です。 –

+0

また、スペルミスや少なくとも1つの誤植もあります。 –

関連する問題