【问题标题】:Laravel relations post has many likesLaravel 关系帖子有很多赞
【发布时间】:2013-12-21 15:11:34
【问题描述】:
        $post = Post::where('reply_to', 0)->skip(0)->take(10)->orderBy('pid', 'desc')->get();

        return Response::json(array(
            'status' => 200,
            'posts' => $post->toArray()
        ), 200);

我想显示帖子,并且帖子中有一个关于谁喜欢它的数组信息。

以 json 格式返回。

我的帖子模型包含

public function likes()
{
    return $this->hasMany('Like', 'pid', 'pid');
}

所以我的问题是我无法做到这种格式。我有点迷路了。

JSON:

{
    status 200
    posts  pid
           uid
           content
           likes
               uid

           post 2
           likes
               uid
}

型号

Post
    pid
    uid
    content

Like
    lid (like id)
    pid (post id)
    uid (user id)

非常欢迎提出建议和帮助


问题是如何实现我想要获得的输出。我返回所有帖子的 json 格式,并且在每个帖子中都有一个喜欢的数组(如果帖子有的话)。它是一个 API。

【问题讨论】:

  • 不明白...你有什么问题?
  • @EduardoStuart 问题是如何实现我想要获得的输出。我返回所有帖子的 json 格式,并且在每个帖子中都有一个喜欢的数组(如果帖子有的话)。它是一个 API。

标签: php json laravel eloquent


【解决方案1】:

我没有测试这个..但是..尝试:

帖子模型:

public function likes(){
   $this->hasMany('Like','post_id');
}

喜欢模特:

public function post(){
   $this->belongsTo('Post','post_id');
}

回复:

$posts = Post::with('likes')->get();

Response::json( $posts->toJson() ); 

试试这个...仅限likes id:

Post::with(array('likes'=>function($query){
   $query->select('id');
}))->get();

【讨论】:

  • 如果我想包含所有帖子,即使它没有任何喜欢怎么办?响应应该是一个 api。如果它被调用,它将获取 10 个最近的帖子数据。但我会先试试你的答案。谢谢:)
  • 对代码稍作修改,它就实现了我想要的。将尽快接受答案。最后只是一个附带问题,我如何只显示喜欢的 uid,而不是提供喜欢的所有列?
  • 我尝试了编辑,但现在喜欢的内容不包含任何内容,即使它应该包含。无论如何,我将 ID 编辑为 UID,因为那是我的专栏。
  • @eduardo-stuart 如果关系有数据而不是 JSON 中的喜欢响应,我需要返回布尔值。请帮我返回 Post::with('likes', 'PostedBy', 'cat', 'tags', 'cmets')->latest()->paginate(6);
猜你喜欢
  • 2018-07-26
  • 2014-07-10
  • 2015-08-05
  • 2016-10-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-09-03
相关资源
最近更新 更多