#laravel
Вопрос:
Я создаю приложение SNS, в котором пользователь и сообщение находятся в отношениях «многие ко многим», с избранным в сводной таблице. Есть ли способ получить все сообщения, которые вам не понравились?
$posts = Post::wherehas("users",function($q)use($your_id){
$q->where('user_id', '!=', $your_id);
})->orDoesntHave('users')->get();
return $posts;
Вышеописанный метод был тем, что я придумал, но, похоже, он не работал, когда более 2 пользователей отдавали предпочтение одному и тому же сообщению.
Ответ №1:
вам нужно выбрать все сообщения , которые не связаны с избранными пользователями, что означает, что у вас нет отношений с конкретным пользователем, поэтому вы можете использовать whereDoesntHave, как это :-
$posts = Post::whereDoesntHave("users",function($q)use($your_id){
$q->where('user_id', '!=', $your_id);
})->get();
return $posts;