2017-05-26 159 views
0

我使用laravel使得社交網絡,我想,以示「‘後’」在單個陣列中的意見‘comment_by’用戶信息與嵌套關係獲取數據Laravel雄辯模型嵌套JSON陣列關係

這裏是我的階級和數據庫結構

表名

成員

  ID => primary key, 
     name, 
     email 

帖子

  ID => primary key, 
     postText 
     fromUserId => foreign key (Members-id) 

評論

  commentText , 
     onPostId = > foreign key (Post-id) 
     fromUserId = > foreign key (Members-id) 

雄辯模型

1.Member.php

class Member extends Model 
{ 
// 
} 

2.post.php

class post extends Model 
{ 
    // 
    public $timestamps = true; 

function getUserDetails() 
{ 
    return $this->belongsTo('App\Member', 'fromUserId', 'id'); 
} 

function getCommentDetails() 
{ 
    return $this->hasMany('App\comment', 'onPostId', 'id'); 
} 


} 

3.comment.php

​​

呼叫用於獲取陣列

$posts=post::with('getUserDetails','getCommentDetails')->get(); 

*預期輸出

{ 
    "id":1, 
    "postType":1, 
    "postText":"my name is parth", 
    "url":null, 
    "likesCount":0, 
    "unlikesCount":0, 
    "shareCount":0, 
    "commentsCount":0, 
    "thumbUrl":null, 
    "accessMode":1, 
    "fromUserId":1, 
    "isAdult":1, 
    "created_at":null, 
    "updated_at":null, 
    "get_user_details":{ 
     "id":1, 
     "name":"parth", 
     "email":"[email protected]", 
     "password":"parth123456", 
     "remember_token":"e1b28a30ab467c52924df64034c386d4", 
     "created_at":null, 
     "updated_at":null 
    }, 
    "get_comment_details":[ 
     { 
     "id":1, 
     "commentsText":"dccd", 
     "onPostId":1, 
     "fromUserId":1, 
     "created_at":"2017-05-25 16:44:51", 
     "updated_at":null 
     "commented_by":{ 
       "id":1, 
       "name":"parth", 
       "email":"[email protected]", 
       "password":"parth123456", 
       "remember_token":"e1b28a30ab467c52924df64034c386d4", 
       "created_at":null, 
       "updated_at":null 
      }, 
     }, 
     { 
     "id":3, 
     "commentsText":"second comment", 
     "onPostId":1, 
     "fromUserId":1, 
     "created_at":"2017-05-26 09:40:51", 
     "updated_at":null 
     "commented_by":{ 
       "id":1, 
       "name":"parth", 
       "email":"[email protected]", 
       "password":"parth123456", 
       "remember_token":"e1b28a30ab467c52924df64034c386d4", 
       "created_at":null, 
       "updated_at":null 
      }, 
     }, 
     { 
     "id":4, 
     "commentsText":"second comment", 
     "onPostId":1, 
     "fromUserId":1, 
     "created_at":"2017-05-26 09:41:16", 
     "updated_at":null 
     "commented_by":{ 
       "id":1, 
       "name":"parth", 
       "email":"[email protected]", 
       "password":"parth123456", 
       "remember_token":"e1b28a30ab467c52924df64034c386d4", 
       "created_at":null, 
       "updated_at":null 
      }, 
     }, 
     { 
     "id":5, 
     "commentsText":"third one", 
     "onPostId":1, 
     "fromUserId":1, 
     "created_at":"2017-05-26 09:41:43", 
     "updated_at":null 
     "commented_by":{ 
       "id":1, 
       "name":"parth", 
       "email":"[email protected]", 
       "password":"parth123456", 
       "remember_token":"e1b28a30ab467c52924df64034c386d4", 
       "created_at":null, 
       "updated_at":null 
      }, 
     } 
    ] 
} 
+0

那麼究竟是什麼問題? – Sandeesh

+0

如何在評論數組中獲得「評論_」 –

+0

添加了我的答案。這應該做你需要的。 – Sandeesh

回答

0

基於您的評論,只是commentedBy關係添加到您的Member模型和貪婪加載它。

在評論模型。

public function commentedBy() 
{ 
    return $this->belongsTo('App\Member', 'fromUserId', 'id'); 
} 

然後急切地加載這樣的關係。

$posts = post::with('getUserDetails','getCommentDetails.commentedBy')->get(); 
+0

但我怎麼會在這個$ posts = post :: with('getUserDetails','getCommentDetails') - > get(); –

+0

@ParthBhatti更新了我的答案,以及如何急於加​​載。 – Sandeesh

+0

很棒的工作!這樣可行 –