2016-07-24 21 views
0

A speichert Produkte und ihre Unterprodukte in einer Tabelle. Das Produkt hat eine Selbstreferenz für 'parentId'. Wenn es sich nicht um Unterprodukte handelt, ist parentId NULL und es gibt nur eine Verschachtelung auf einer Ebene. Daher haben Unterprodukte keine Unterprodukte. Ich möchte eine Suchabfrage implementieren, die alle Datensätze durchsucht, aber übergeordnete Produkte zurückgibt. Wenn Sie also nach einem Begriff suchen, der mit einem Unterprodukt übereinstimmt, werden die übergeordneten Produkte angezeigt. Dies ist meine aktuelle Abfrage:In allen Datensätzen suchen, aber nur die übergeordneten Produkte und keine Unterprodukte zurückgeben, Laravel5.2

$products = Product::with('categories') 
      ->where('is_active', '=', 1) 
      ->where('name', 'LIKE', "%$search_term%") 
      ->where('brand', 'LIKE', "%$search_term%") 
      ->orWhere('description', 'LIKE', "%$search_term%") 
      ->orderBy('id', 'ASC') 
      ->where('parent_pid', '=', 'NULL') 
      ->get(); 
+0

versuchen, diese 'whereNotNull ('parent_pid')' statt dessen ' -> wo ('parent_pid', '=', 'NULL') ' – Pankaj

Antwort

0

Die Art und Weise Sie Ihre Produkte Filter mit

->where('parent_pid', '=', 'NULL') 

tut einfachen String-Vergleich und prüft, ob parent_pid Spalte Zeichenfolge NULL enthält.

Wenn Sie alle Produkte filtern möchten, die NULL Wert in dieser Spalte haben, müssen Sie verwenden whereNull Methode:

->whereNull('parent_pid')