错误-尝试获取非对象的属性-Laravel

时间:2019-03-16 16:37:31

标签: php laravel eloquent

我正在尝试根据ID显示一条记录。我收到此错误:

  

试图获取非对象的属性

显示来自ClientsController的功能:

public function show( Clients $clients)
{
    $clients = Clients::find($clients->id);

    return view('clients.show', ['clients' => $clients]);

}

单个show.blade视图文件

   @extends('layouts.app')

    @section('content')
     <h1>{{ $clients->name }}</h1>


    @endsection

客户模型:

class Clients extends Model
{
    //
    protected $fillable = [
        'name', 'type', 'user_id', 'sales_id', 'regions_id'
    ];
    public function user(){
        return $this->belongsTo('App\User');
    }
    public function region(){
        return $this->belongsTo('App\Regions');
    }
    public function sales(){
        return $this->belongsTo('App\Sales');
    }
}

数据库:https://take.ms/7kuo4

2 个答案:

答案 0 :(得分:0)

未找到您要查找的客户端ID的客户端。看来route/model binding可能配置不正确,或者您是not receiving the proper id from the request

如果路由/模型绑定正常工作,并且找到了传入的ID,则您不必进行find()调用。

$clients = Clients::find($clients->id);

刀片服务器模板中的错误是因为您试图访问null值/非对象值上的属性。

$clients->name

如果对象不存在,则可以使用空合并运算符来处理这种情况:

$clients->name ?? "No Name"

答案 1 :(得分:0)

您应该使用类型提示变量名称的单数来更正模型绑定,即:

public function show( Clients $client)
{
    return view('clients.show', ['clients' => $client]);
}