我有一个内容表,其中包含由不同用户创建的大量内容...我正在尝试验证内容是否由登录的用户创建,然后向响应中添加新的键值对,因此,内容是由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,但这只返回用户创建的内容,而不是条件为真。
有什么想法吗?提前谢谢。
答案 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;