2017-12-05 4 views
1

Ich habe diese einfache Tabelle alle Kategorien enthalten:Laravel: Abfrage kinderlos Elemente in einer Tabelle

Kategorie: id | Name | parentid

Eloquent Verwendung, wie kann ich alle Kategorien abfragen, die keine Childs haben ?

+0

was sind Childs ?, erklären weiter mit Ihrem Code –

+0

mit Childs ich meine : Kategorien, deren Wert für "ID" nicht als Wert von "Parentid" für andere Kategorien auftritt. –

Antwort

0

Sie etwas tun könnte, wie:

Category::whereNull('parent_id')->get(); 

aber es könnte besser eine ‚Kinder‘ Beziehung im Modell und es, dass die Verwendung tut Einrichtung werden:

category.php

public function children() 
{ 
    return $this->hasMany('App\Category', 'parent_id', 'id'); 
} 

Verwendung

Category::whereDoesntHave('children')->get(); 
+0

Vielen Dank! Ich musste dies jedoch ändern: zurückgeben $ this-> hasMany ('App \ Category', 'ID', 'ParentID); zu return $ this-> hasMany ('App \ Category', 'parentid', 'id'); –

+0

ah, ich werde die Antwort aktualisieren, ich bekomme immer die falschen herum. – martincarlin87

1

Sie haben eine Beziehung zu bauen und dann können Sie verwenden, um die folgenden

$query = Category::query(); 
$query->whereDoesntHave('child'); 
$query->get(); 

oder einfachste ist

Category::whereNull('parent_id')->get(); 
Verwandte Themen