期望的输出:
Post
uid
comments
uid
author
username
likes
uid
username
likes
uid
user
username
author
uid
user
username
所以目前我有帖子的所有评论、点赞和作者。
但它们都只包含 UID。
此处:现在我想在评论、点赞和作者上添加用户名信息,这样我就可以获得喜欢该帖子的用户的 USERNAME 或 FIRST_NAME 以及其他元素。
分解它。
- 每个帖子都包含帖子详细信息、评论、喜欢和作者
- 目前评论里面是作者用户数据(正确)
- 目前评论里面的userdata有avatar_id(错了,我要头像链接)
- 目前点赞里面是user_id(错了,我要user_data)
- 目前作者内部是用户数据,但只有头像的 ID(错误,我想要从 user_avatars 表链接到头像
我的帖子模型。
/**
* 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');
}
我的 Controller
$post = Post::with('comments', 'likes', 'author')->where('jid', 2)->get();
return $post;
所以从技术上讲,Author() 也应该连接到 user_avatars 和文件,因为 user_avatars 包含 File_ID 和 USER_ID,而 files 表包含 File_ID 和到头像的链接。 怎么做?
另一个注意事项:'调用未定义的方法 Illuminate\Database\Query\Builder::author()'
如果我这样做:
public function likes()
{
return $this->hasMany('Like', 'pid', 'pid')->with('author');
}
最佳答案
我遇到了和你一样的问题,我是这样解决的:
在你发布的模型中:
public function user()
{
return $this->hasOne('User', 'uid', 'uid');
}
然后在你的帖子 Controller 中:
$post = Post::where('id', $id)->with('user')->first();
然后在您的帖子 Blade View 中:
$post->user->firstname;
当然你也可以在你的 Eloquent 语句中添加评论和点赞。
让我知道这是否解决了您的问题。我可以将答案编辑成更好的解决方案。
关于php - Laravel 对关系的 Eloquent 复杂查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20817821/