Я хочу применить фильтр к сообщениям пользователя с помощью этого кода:
$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);
});
все в порядке, кроме запроса с идентификатором пользователя, он проходит через ->when($request->filled('userid') и результат пустой,
Я хочу получить пользователей, которые были отмечены тегами или прокомментированы в сообщениях пользователя, указав идентификатор пользователя для отношений «теги» и «комментарии», я получил $q->where('taggeduser.id', $user);
но $query->get() пуст.






попробуй это
$user = $request->userid;
$query = Post::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);
})->get();
все еще нет результата, но у меня есть 2 записи в тегах для 1 сообщения, и он ничего не возвращает.