Laravel sort имеетМногую Страна-> Город Отношения

У меня есть следующие модели:

Страна, СтранаTranslation, Город, CityTranslation

Я хочу добиться, чтобы получить список всех городов в какой-либо стране, но они должны быть отсортированы по их названию. Проблема в том, что названия этих городов есть в CityTranslation.

Вот определения модели:
Страна:

class Country extends Model {
protected $fillable = [
'code', 'latitude', 'longitude', 'currency_id', 'timezone', 'dam_date', 'status',
];

public function translations() {

return $this->hasMany('App\Models\CountryTranslation');

}

public function city() {

return $this->hasMany('App\Models\City');

}

}

Город:

class City extends Model {

protected $fillable = [
'name', 'latitude', 'longitude', 'code', 'country_id', 'status',
];

public function translations() {

return $this->hasMany('App\Models\CityTranslation');

}public function country() {

return $this->hasMany('App\Models\Country');

}

}

CityTranslation:

class CityTranslation extends Model {

protected $fillable = [
'name', 'lang', 'city_id',
];

public function city() {
return $this->hasOne('App\Models\City', 'id', 'city_id');
}

}

На данный момент я получаю эти города следующим образом, но они не упорядочены:

$country = $this->country->findOrFail($id);
foreach (City::where('country_id', '=', $id)->get() as $cur) {
$city_trans = CityTranslation::where(array(['city_id', '=', $cur->id], ['lang', '=', Lang::getLocale()]))->orderBy('name', 'asc')->first();
$cities_by_country[$cur->id] = $city_trans->name;
}

0

Решение

В вашем Country модель вы можете использовать что-то вроде этого:

public function city()
{
return $this->hasMany('App\Models\City')->orderBy('name');
}

Затем, когда вы запрашиваете Country использование with например:

$countryWithCity = Country::with('city')->findOrFail($id);

Итак $countryWithCity->city будет заказан.

0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]