我是laravel的新手,我使用的是Laravel 5.2我希望获得用户特定帖子的所有评论。我的表就像:
User
-----
id
public function posts() {
$this->hasMany( 'App\Posts' )
}
Post
------
id
user_id
public function user() {
$this->belongsTo( 'App\User' )
}
public function comments() {
$this->hasMany( 'App\Comment' )
}
Comments
----------
id
post_id
public function post() {
$this->belongsTo( 'App\Post' )
}
现在我想要的是获得一个特定用户的所有帖子说登录用户。我可以通过很长的方式获得所有评论:
$comments = [];
foreach( Auth::user()->posts as $post) {
foreach( $post->comments as $comment )
{
$comments[] = $comment->title
}
}
但是我想知道如何在不使用关系的情况下使用这些循环来获取注释。提前谢谢。
答案 0 :(得分:0)
基本上,您希望使用with()
和点符号急切加载:
$user = User::with('posts.comments')->find(Auth::user()->id);
如果您只想要评论,可以这样做:
$user = User::with('comments')->find(Auth::user()->id);
$comments = $user->comments();
答案 1 :(得分:0)
您可以将现有用户对象的关系加倍:
$posts = \Auth::user()->posts()->with('comments')->get();
它适用于所有级别。
在我的项目中,我的组织与客户有一个链接表到治疗师,所有多个,这是有效的:
Organization::find(1)->clients()->with('therapists')->get();
所以你的情况也应该有效。让我知道。