Laravel Eloquent:Viele-zu-viele-Elemente ohne untergeordnete Elemente auswählen (mit Pivot)
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;
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