Ларавель Красноречивый:Элементы выбора "Многие ко многим" без дочерних элементов (с использованием pivot)

StackOverflow https://stackoverflow.com//questions/25028078

  •  21-12-2019
  •  | 
  •  

Вопрос

Довольно стандартная установка:

таблица "Сообщения", таблица "Категории" сводная таблица "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();
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top