【问题标题】:ErrorException (E_ERROR) Trying to get property 'name' of non-object in laravel 5.5ErrorException(E_ERROR)试图在 laravel 5.5 中获取非对象的属性“名称”
【发布时间】:2019-08-24 21:07:04
【问题描述】:

当我试图访问从视图内的控制器传递的变量时,我收到了这个错误。我使用命令创建了控制器:

php artisan make:controller CompaniesController --resource

所以我有所有的资源方法可以使用。

这是我给的路线

Route::resource('/createcompany','CompaniesController' );

这是我的控制器内部的功能

public function show($id)
{
  $company = Company::find($id);
  return view('pages.admin.showcompany')->with('company', $company);
}

公司有 id 和 name 作为属性

这是我的看法

@extends('layouts.app')

@section('content')

<h1>{{$company->name}} </h1>

@endsection

我查找了类似的问题(thisthisthis),但它们没有帮助。

【问题讨论】:

  • 在返回视图之前,用dd($company); 仔细检查$company 实际包含的内容。还要确保您使用的 id 确实存在于数据库中。
  • 是的,dd($company) 返回 null。解决了。谢谢 ! @MagnusEriksson
  • 下一次;在发布问题之前,请务必先进行一些适当和基本的调试。
  • 是的,我是 laravel 的初学者。这次对不起!对不起,谢谢! @MagnusEriksson
  • 无需道歉。下次记住这一点:-)

标签: php laravel laravel-5 eloquent


【解决方案1】:

您需要检查 Company 对象,例如:

public function show($id)
{
    $company = Company::find($id);

    if( is_null($company) ){
         dd( "There's no company with the id=".$id);
    }

    return view('pages.admin.showcompany')->with('company', $company);
}

【讨论】:

  • 感谢@kerbholz 的干预,是的,你是对的......更新了
  • 恭喜@bohemianjock,您已经获得了VoteUp privilege,如果任何答案有帮助,如果此处发布的任何答案是您想要的,请考虑使用它将其标记为 correct answer 供以后的读者使用。
【解决方案2】:

您可以使用以下代码进行显示:


public function show(Company $company)
    {
        return view('pages.admin.showcompany',compact('company'));
    }

【讨论】:

    【解决方案3】:

    为什么不用findOrFail() 方法,如果没有可用的模型,它会自动向您发送模型未找到异常。

    public function show($id)
    {
        $company = Company::findOrFail($id);
    
        return view('pages.admin.showcompany')->with('company', $company);
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-11-16
      • 2018-02-10
      • 1970-01-01
      • 2017-08-02
      • 2018-04-14
      • 1970-01-01
      • 1970-01-01
      • 2020-09-30
      相关资源
      最近更新 更多