Laravel Eloquent:Viele-zu-viele-Elemente ohne untergeordnete Elemente auswählen (mit Pivot)

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

  •  21-12-2019
  •  | 
  •  

Frage

Ziemlich normales Setup:

Tabelle "Posts", Tabelle "Kategorien" 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');
}

Pivot-Tabelle mit ordnungsgemäßer Einrichtung der Fremdschlüssel.

Ich kann anscheinend nicht herausfinden, wie ich ALLE BEITRÄGE ohne Kategorien erhalten kann (oder wie ich Kategorien ohne Beiträge erhalten kann, z. B. leere Kategorien).

Ich würde das gerne eloquent machen, aber in SQL wäre es so etwas wie:

SELECT *, 
       (SELECT COUNT(id) cnt 
        FROM posts_categories pc 
        WHERE pc.post_id = p.id)  AS cnt   
FROM posts p 
HAVING cnt = 0;
War es hilfreich?

Lösung

Sie können dies verwenden, um alles zu bekommen Posts das hat nein Category:

$posts = Post::has('categories', '=', 0)->get();
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top