Portál AbcLinuxu, 4. května 2025 00:50
Country hasMany cities() City hasMany streets() Street hasMany houses() House belongsTo street() Street belongsTo city() City belongsTo country()A ted se snazim do modelu Country pridat metodu houses(), ktera mi vrati pole vsech House modelu v dane Country. Dopracoval jsem se k tomuto:
public function houses(): Builder { $houses = House::whereHas('street', function($query) { $query->whereHas('city', function($query) { $query->where('cities.country_id', $this->id); }); }); return $houses; }Coz mi sice funguje, ale za boha nejsem schopny prijit na to, jak ty vracene modely nejprve seradit podle cities.name, potom podle streets.name a nakonec podle houses.number Dekuji za pripadnou pomoc
public function houses(): Builder { $houses = House::leftJoin('streets', function($join) { $join->on('houses.street_id', 'streets.id')->leftJoin('cities', function($join) { $join->on('streets.city_id', 'cities.id')->where('cities.country_id', $this->id); }); }) ->orderBy('cities.name') ->orderBy('streets.name') ->orderBy('houses.number'); return $houses; }Omlouvam se, za zbytecny dotaz.
public function houses(): Builder { $houses = House::leftJoin('streets', function($join) { $join->on('houses.street_id', 'streets.id'); }) ->leftJoin('cities', function($join) { $join->on('streets.city_id', 'cities.id'); }) ->where('cities.country_id', $this->id) ->orderBy('cities.name') ->orderBy('streets.name') ->orderBy('houses.number'); return $houses; }
Tiskni
Sdílej:
ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.