Laravel:ErrorException(E_ERROR)试图获取非对象的属性(View:.... / show.blade.php)

时间:2019-08-12 10:22:48

标签: php laravel view model controller

请帮助...我看不到我的错误,我是新手:

OrdersController.php:

public function show(Order $order)

    {
        return view('/orders.show', compact('order'));
    }

Order.php:

public function TypesOfTest()
    {
        return $this->belongsTo(TypesOfTest::class);
    }

show.blade.php:

    <div class="col-12">
      <p>Order for: {{ $order->patient->name . ' ' . $order->patient->fname}} </p>
      <p>Test type: {{ $order->TypesOfTest->nameOfTest }}</p>
    </div>

({ $order->TypesOfTest->nameOfTest }}  <-- is the problem

DB: orders table:

DB: types_of_tests table

2 个答案:

答案 0 :(得分:1)

声明关系时,laravel允许您定义涉及到的键。如果您不这样做,则只需将后缀_id添加到表名即可作为外键。

在您的情况下(未定义foreign_key),它将创建错误。将您的belongsTo关系更改为此:

public function TypesOfTest()
{
    return $this->belongsTo(TypesOfTest::class, 'typesOfTest_id');
}

答案 1 :(得分:0)

您在模型中的关系:

Order.php:

public function TypesOfTest()
    {
        return $this->belongsTo(TypesOfTest::class, 'typesOfTest_id');
    }

TypesOfTest.php

public function order()
    {
        return $this->hasMany(Order::class);
    }