Прямо сейчас у меня есть данные ниже:
![First](https://i.stack.imgur.com/8OCBL.png)
![Second](https://i.stack.imgur.com/7H6FU.png)
Теперь проблема свыше, это то, что он создает новый массив для каждой записи в моей базе данных.
Я бы очень хотел получить ниже вывод:
![Third](https://i.stack.imgur.com/03Ogp.png)
![Fourth](https://i.stack.imgur.com/mRaEy.png)
Разница в том, что:
- Все одинаковые маршруты должны быть сгруппированы.Таким образом, если
Route
совпадает, он должен быть в том же списке маршрутов. Если Carrier
в маршруте совпадает, то он должен быть в этом маршруте и перевозчик
Если маршрут другой, он должен начать новый список (** Маршрут: от XYZ до XYZ)
Текущий код:
Controller.php
:
public function show()
{
$routes = Routes::where('id', '>=', 1)
->with('routeStops', 'getVessel')
->get()
->toArray();
foreach ($routes as $key => $value) {
echo '<h2>Route: ' . $value['origin'] . ' to ' . $value['destination'] . '</h2>';
$carrier = Carriers::where('id', $value['get_vessel']['carriers_id'])->first()->name;
echo 'Carrier: ' . $carrier . '';
dump($value);
}
}
Это мои модели:
Routes.php
/**
* Get the route stop associated with this route.
*/
public function routeStops()
{
return $this->hasMany('App\RouteStops', 'route_id');
}
/**
* Get the vessel record associated with this route.
*/
public function getVessel()
{
return $this->belongsTo('App\Vessels', 'vessel_id');
}
Как мне это сделатьЯ добился 2-го желаемого выхода?