У меня есть две модели Cities
и States
.Один City
имеет 1 State
, а один State
может иметь 0 или более Cities
.Мне нужно извлечь все Cities
и States
по отдельности, потому что мне нужно отображать состояния, даже если у штата нет связанных городов (например, Алабама в приведенном ниже примере).Проблема в том, что мне нужно сначала отсортировать по названию штата, а затем по городам в этом состоянии (если они есть)
Города
id, state_id, name
1, 1, San Diego
2, 1, Hollywood
3, 2, Seattle
4, 3, Pheonix
Состояния
id, name
1, California
2, Washington
3, Arizona
4, Alabama
Контроллер:
$cities = Cities::with('state')->get(); // Returns the state relationship
$states = States::get();
$merged = $states->merge($cities);
Теперь я хотел бы отсортировать сначала по State
названию, а затем по всем городам в этом State
и вернуть объединенную коллекцию, подобную этой:
{
id: 4,
name: Alabama,
},
{
id: 3,
name: Arizona,
},
{
id: 3,
name: Pheonix,
state_id: 3
state: {
id: 3,
name: Arizona
}
},
{
id: 1,
name: California
},
{
id: 2,
name: Hollywood
state_id: 1,
state: {
id: 1,
name: California
}
},
{
id: 1,
name: San Diego,
state_id: 1,
state: {
id: 1,
name: California
}
},
{
id: 2,
name: Washington,
},
{
id: 2,
name: Seattle,
state_id: 2,
state: {
id: 2,
name: Washington
}
}