Laravel:ErrorException(E_ERROR)试图获取非对象的属性(视图:..../show.blade.php)[关闭]

Posted

技术标签:

【中文标题】Laravel:ErrorException(E_ERROR)试图获取非对象的属性(视图:..../show.blade.php)[关闭]【英文标题】:Laravel: ErrorException (E_ERROR) Trying to get property of non-object (View:..../show.blade.php) [closed] 【发布时间】:2019-08-12 10:22:48 【问题描述】:

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

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

【问题讨论】:

【参考方案1】:

当你声明一个关系时,laravel 允许你定义其中涉及的键。如果你不这样做,对于外键,它只是将后缀_id 添加到表的名称中。

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

public function TypesOfTest()

    return $this->belongsTo(TypesOfTest::class, 'typesOfTest_id');

【讨论】:

工作!!谢谢【参考方案2】:

您在模型中的关系如下:

Order.php:

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

TypesOfTest.php

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

【讨论】:

以上是关于Laravel:ErrorException(E_ERROR)试图获取非对象的属性(视图:..../show.blade.php)[关闭]的主要内容,如果未能解决你的问题,请参考以下文章

php artisan serve [ErrorException] laravel

updateOrCreate 在 laravel 中导致 ErrorException

laravel - ErrorException 数组到字符串的转换

laravel 5.5:php artisan tinker:ErrorException:目录不为空[重复]

StreamBuffer.php 第 95 行中的 ErrorException:在 laravel 5 中

Laravel 6 ErrorException 未定义变量:用户(...home.blade.php)