3

我想退回模型及其部分关系

前任::

用户模型

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

评论模型

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

我可以返回所有评论以及与评论关联的用户名吗?

想要的效果是

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

这将返回一条评论和关联的用户完整模型。我只需要用户名。如果我打电话,这不起作用Comments::all()

先感谢您。

4

1 回答 1

9

你正在寻找 Eloquent 的Eager Loading

假设您的 Comments 模型有一个方法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;

你也可以做相反的事情:

假设您的用户模型有一个方法“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 回答