Ларавель Красноречивый:Элементы выбора "Многие ко многим" без дочерних элементов (с использованием pivot)
Вопрос
Довольно стандартная установка:
таблица "Сообщения", таблица "Категории" сводная таблица "posts_categories"
/************** CATEGORY MODEL *********/
class Category extends Eloquent
{
/** standard code**/
public function posts()
{
return $this->belongsToMany('Post','posts_categories');
}
}
/************* POSTS MODEL ************/
class Post extends Eloquent
{
/** the usual **/
public function categories()
{
return $this->belongsToMany('Category', 'posts_categories');
}
сводная таблица с правильной настройкой внешних ключей.
Кажется, я не могу понять, как получить все сообщения без каких-либо категорий (или, если уж на то пошло, получить категории без каких-либо сообщений, например, пустые категории)
Я хотел бы сделать это в eloquent, но в sql это было бы что-то вроде:
SELECT *,
(SELECT COUNT(id) cnt
FROM posts_categories pc
WHERE pc.post_id = p.id) AS cnt
FROM posts p
HAVING cnt = 0;
Решение
Вы можете использовать это, чтобы получить все Posts
которые не имеют Category
:
$posts = Post::has('categories', '=', 0)->get();
Не связан с StackOverflow