【发布时间】:2021-07-01 01:22:33
【问题描述】:
我想使用此代码对用户的帖子应用过滤器:
$user = $request->userid;
$query = Post::query()
->where('post.owner.username', $username)
->when($request->filled('userid'), function (Builder $query) use ($user) {
$query->whereHas('tags', function (Builder $q) use ($user) {
$q->where('taggeduser.id', $user);
})->orWhereHas('comments', function (Builder $q) use ($user) {
$q->where('comment.owner.id', $user);
});
})
->when($request->filled('searchText'),
function (Builder $query) use ($username, $searchText) {
$query->whereRaw(['post.owner.username' => ['$eq' => $username]]);
$query->getQuery()->projections = ['score' => ['$meta' => 'textScore']];
$query->whereRaw(['$text' => ['$search' => $searchText]])->orderByDesc('post.taken_at_timestamp');
})
->when($request->filled('location'),
function (Builder $query) use ($location) {
$query->where('post.location.id', $location);
});
一切都很好,除了请求有用户ID,它通过->when($request->filled('userid'),结果为空,
我想获取已在用户帖子中标记或评论的用户,将用户 ID 提供给“标签”和“cmets”关系,我得到$q->where('taggeduser.id', $user);
但是$query->get() 是空的。
【问题讨论】:
标签: mysql laravel eloquent orm