期望的输出:
Post
uid
comments
uid
author
username
likes
uid
username
likes
uid
user
username
author
uid
user
username
所以目前我有这篇文章的所有评论,喜欢和作者 但是它们都只包含UID。
HERE :现在我想在评论,喜欢和作者上添加用户名信息,这样我就可以获得喜欢帖子和其他元素的用户的USERNAME或FIRST_NAME。
要打破它。
我的帖子模型。
/**
* Author of a post.
*
* @return Object
*/
public function author()
{
return $this->belongsTo('User', 'uid', 'uid');
}
/**
* Comments of a post.
*
* @return Object
*/
public function comments()
{
return $this->hasMany('Post', 'reply_to', 'pid')->with('author');
}
/**
* Likes of a post.
*
* @return Object
*/
public function likes()
{
return $this->hasMany('Like', 'pid', 'pid');
}
我的控制器
$post = Post::with('comments', 'likes', 'author')->where('jid', 2)->get();
return $post;
技术上,Author()也应该加入user_avatars和文件,因为user_avatars包含File_ID和USER_ID,files表包含File_ID和avatar的链接。 怎么做?
另一个注意事项:'调用未定义的方法Illuminate \ Database \ Query \ Builder :: author()'
如果我这样做:
public function likes()
{
return $this->hasMany('Like', 'pid', 'pid')->with('author');
}
答案 0 :(得分:0)
我遇到了同样的问题,我这样解决了:
在你发布模型:
public function user()
{
return $this->hasOne('User', 'uid', 'uid');
}
然后在你的帖子控制器中:
$post = Post::where('id', $id)->with('user')->first();
然后在您的后刀片视图中
$post->user->firstname;
当然,您也可以将评论和喜欢添加到您的Eloquent声明中。
如果这解决了您的问题,请告诉我。我可以将答案编辑成更好的解决方案。