Laravel - 如果ID相同,则为响应添加键/值

时间:2017-05-02 15:17:55

标签: php laravel lumen

我有一个内容表,其中包含由不同用户创建的大量内容...我正在尝试验证内容是否由登录的用户创建,然后向响应中添加新的键值对,因此,内容是由user_id 1创建的,我是用户1,然后响应在内容对象上有一个像isOwn:1这样的字段,但是如果内容是由其他人创建的,则没有。

这是我的标准:

$query = $model->select('contents.*', 'status_types.name as status', 'content_types.name as content_type')
                       ->join('status_types', 'status_types.id', '=', 'contents.status_type_id')
                       ->join('content_types', 'content_types.id', '=', 'contents.content_type_id')
                       ->with('platforms')
                       ->with('classifications')
                       ->withCount(['favorite' => function ($q) {
                           $q->where('user_id', '=', $this->request->user()->getIdentifier());
                       }])
                       ->withCount('likes')
                       ->inRandomOrder();

        return $query;

我尝试过使用when和whereExist,但这只返回用户创建的内容,而不是条件为真。

有什么想法吗?提前谢谢。

1 个答案:

答案 0 :(得分:0)

您需要加入模型并为总查询设置一个位置:

$query = $model->select('contents.*', 'status_types.name as status', 'content_types.name as content_type')
                       ->join('status_types', 'status_types.id', '=', 'contents.status_type_id')
                       ->join('content_types', 'content_types.id', '=', 'contents.content_type_id')
                       ->join('favorites', 'favorites.contents_id', '=', 'contents.id') // or whatever the relation is
                       ->with(['platforms', 'classifications'])
                       ->withCount(['favorite'])
                       ->withCount('likes')
                       ->where('favorites.user_id', '=', $this->request->user()->getIdentifier())
                       ->inRandomOrder();

        return $query;