2013-07-07 84 views
3

我想回到它的关系模型和部分Laravel 4 ::回归模型及其关系

EX ::

用户模型

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

评论模型

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

我可以返回所有评论和用户的名称与对此有何评论?

所需的效果是

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

这将返回一个意见和相关用户完整的模型。我只需要用户的名字。如果我打电话,这不起作用Comments::all()

预先感谢您。

回答

6

你要找的雄辩的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; 

你可以做相反的事情:

假设你的用户模型的方法“的评论()”,像这样:

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;