【问题标题】:Laravel eloquent complex queries on relationshipsLaravel 雄辩的复杂关系查询
【发布时间】:2014-01-16 01:21:35
【问题描述】:

期望的输出:

Post
   uid
   comments
          uid
          author
             username
          likes
             uid
                username
   likes
          uid
          user
             username
   author
          uid
          user
             username

所以目前我拥有该帖子的所有 cmets、喜欢和作者。
但它们都只包含 UID。

这里:现在我想在 cmets、likes 和 author 上添加用户名信息,这样我就可以获得喜欢帖子和其他元素的用户的 USERNAME 或 FIRST_NAME。

分解它。

  • 每个帖子都包含帖子详细信息、cmets、喜欢和作者
  • 当前在 cmets 中是作者的用户数据(正确)
  • 目前评论里面的userdata包含avatar_id(错了,我要头像链接)
  • 目前likes里面是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');
}    

我的控制器

$post = Post::with('comments', 'likes', 'author')->where('jid', 2)->get();

return $post;

所以从技术上讲,Author() 也应该加入 user_avatars 和 files,因为 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');
} 

【问题讨论】:

    标签: php mysql laravel eloquent


    【解决方案1】:

    我遇到了同样的问题,我是这样解决的:

    在你发布的模型中:

    public function user()
    {
    
        return $this->hasOne('User', 'uid', 'uid');
    
    }
    

    然后在您的后期控制器中:

    $post = Post::where('id', $id)->with('user')->first();
    

    然后在您的帖子刀片视图中:

    $post->user->firstname;
    

    当然你也可以在你的 Eloquent 语句中添加 cmets 和 likes。

    让我知道这是否解决了您的问题。我可以将答案编辑为更好的解决方案。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-06-17
      • 2016-07-01
      • 2016-02-26
      • 2017-02-17
      • 1970-01-01
      • 2019-12-19
      • 2019-06-27
      相关资源
      最近更新 更多