Как правильно вывести данные из базы данных?

Есть 2 таблицы orders и tech
orders:
id | tech_id | work

tech:
id | serial

OrderController:
class OrderController extends Controller
{
   public function index(){
        /*
         * Вывод списка заказов
         */
        $orders = DB::table('orders')->get();
        return view('orders', ['orders' => $orders]);
    }
  public function tech()
    {
        return $this->belongsTo(TechController::class, 'tech_id');
    }
}


TechController:
class TechController extends Controller
{
   
    public function orders()
    {
        return $this->hasMany(OrderController::class);
    }
 
}


В orders.blade вывожу заказы так:
foreach ($orders as $order)
$order->work
@endforeach

Вопрос: как мне вывести serial из таблицы tech рядом с $order->work?
Я могу вывести используя запрос в самом blade:
$tech_ids = DB::table('tech')->where('id', $order->tech_id)->pluck('serial');
  foreach ($tech_ids as $tech_ids) {  echo $tech_ids; }


Но ведь это не правильно. Хочу использовать отношение один ко многим. Прошу разжевать.
Читал: https://laravel.ru/docs/v5/eloquent-relationships
https://laravel.demiart.ru/one-to-many-relationship/
и еще кучу всего.
  • Вопрос задан
  • 447 просмотров
Решения вопроса 1
@rst630
да у вас в принципе неправильно отношения прописаны.

Должно быть две модели Orders и Tech

Orders:
public function tech()
    {
        return $this->belongsTo(Tech::class,'tech_id','id');
    }

Tech:
public function orders()
    {
        return $this->hasMany(Orders::class);
    }


и вот в таком варианте вам будет доступно $order->tech->serial для вывода в шаблоне
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы