2015-06-02 15 views
6

Jak napisać self join w elokwencji? Czy muszę zdefiniować relację na modelu?Self Join in Eumquent

Oto moja wypowiedź:

SELECT t2.title FROM products t1, products t2 
WHERE t1.id = $id 
AND t2.color_id = t1.color_id AND 
t2.id != $id 

Odpowiedz

6

można po prostu zdefiniować relację do siebie.

public function parent() 
{ 
    return $this->belongsTo(self::class, 'color_id'); 
} 

public function children() 
{ 
    return $this->hasMany(self::class, 'color_id'); 
} 
+0

Dzięki, jak mógłbym to nazwać? Próbowałem Product :: with ('children') -> find (1), ale to wraca ze wszystkimi dziećmi o id kolorów 1, muszę wyjść z rzędu 1 z produktów i dzieci powinny być identyfikator koloru z wiersza 1. – panthro