3

モデルとその関係の一部を返したい

元::

ユーザーモデル

public function comments() 
{
    return $this->hasMany('comments');
}

コメントモデル

public function user() 
{
    return $this->belongsTo('user');
}

すべてのコメントと、コメントに関連付けられたユーザー名を返すことはできますか?

望む効果は

    $comment = Comments::find($id);
    $comment->user;
    return $comment;

これにより、1 つのコメントと関連するユーザーの完全なモデルが返されます。ユーザーの名前だけが必要です。そして、私が呼び出すと、これは機能しませんComments::all()

前もって感謝します。

4

1 に答える 1

9

あなたはEloquentのEager Loadingを探しています

コメント モデルにメソッドがあると仮定しますuser()

public function user()
{
    return $this->belongsTo('User');
}

コントローラーでこれを行うことができるはずです:

$comments = Comments::with('user')->where('post_id', $post_id);

// Return JSON, as is Laravel's convention when returning 
// Eloquent model directly
return $comments;

反対のこともできます:

User モデルにメソッド「comments()」があると仮定すると、次のようになります。

public function comments()
{
    return $this->hasMany('Comment');
}

ユーザーの $id が利用可能であると仮定すると、コントローラー内で次のことができるはずです。

$user = User::with('comments')->find($id);

// Return JSON, as is Laravel's convention when returning 
// Eloquent model directly
return $user;
于 2013-07-07T02:22:26.493 に答える