Вы можете сделать это, используя отношения Один ко многим .
Прежде всего, обновите таблицу orders
, чтобы правильно использовать Eloquent Relationships :
+----+---------+---------+--------+-----------+
| id | orderno | city_id | zip_id | street_id |
+----+---------+---------+--------+-----------+
| 1 | 100001 | 1 | 2 | 3 |
| 2 | 100002 | 1 | 1 | 2 |
| 3 | 100003 | 1 | 1 | 1 |
+----+---------+---------+--------+-----------+
1. Определите взаимосвязь между city
и zip
таблицами:
Добавьте это к вашей zip
миграции таблицы:
$table->foreign('city_id')->references('id')->on('city')->onDelete('cascade');
Затем определите метод city()
в вашем Zip
модель класса:
public function city()
{
return $this->belongsTo('App\City');
}
2. Определите отношения между zip
и street
таблицами:
Добавьте это к вашей street
таблице миграции:
$table->foreign('zip_id')->references('id')->on('zip')->onDelete('cascade');
Затем определите метод zip()
в вашем Street
модель класса:
public function zip()
{
return $this->belongsTo('App\Zip');
}
3. Определите взаимосвязь между таблицами city
, zip
, street
и orders
:
Добавьте эти строки в таблицу orders
миграции:
$table->foreign('city_id')->references('id')->on('city');
$table->foreign('zip_id')->references('id')->on('zip');
$table->foreign('street_id')->references('id')->on('street');
Затем определите метод для каждого из этих отношений в вашем Order
классе модели:
public function city()
{
return $this->belongsTo('App\City');
}
public function zip()
{
return $this->belongsTo('App\Zip');
}
public function street()
{
return $this->belongsTo('App\Street');
}
4. Теперь используйте их в своем представлении (блейд):
@foreach($orders as $order)
<tr>
<td>{{ $order->id }}</td>
<td>{{ $order->orderno }}</td>
<td>{{ $order->city['name'] }}</td>
<td>{{ $order->zip['code'] }}</td>
<td>{{ $order->street['name'] }}</td>
</tr>
@endforeach
Примечание: Имена таблиц по умолчанию во множественном числе в Laravel Eloquent. Если вы хотите, чтобы имена таблиц были единичными, не забудьте установить свойство $table
внутри ваших моделей. Например, в вашем City
классе модели:
protected $table = 'city';