php - Laravel 对关系的 Eloquent 复杂查询

标签 php mysql laravel eloquent

期望的输出:

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/

相关文章:

php - PHP 中的 AWS Cognito 开发人员身份验证

php - 这行 PHP 是否足以防止 MySQL 注入(inject)?

mysql - Laravel 编写一个查询来查找是否在日期启用了访问

c# - 从浏览器调用Windows服务

php - WSDL 中不存在 NuSoap 操作

php - 处理数百万行时,PDO DELETE异常慢

mysql - 我是否需要为具有单行(设置表)的 MySQL 表定义索引

mysql - SQL 按不同字段排序

php - Laravel 5 - session 不起作用

Laravel Eloquent - 软删除不起作用