Laravel错误:通过first()方法访问时尝试获取非对象的属性

时间:2018-10-20 07:56:28

标签: php laravel-5 error-handling eloquent

我正在使用laravel 5.6和PHP 7.1。

当我尝试访问使用雄辩的ErrorException Trying to get property of non-object方法检索的帖子的属性时,Laravel抛出first()

$post = Blog::select('id', 'title', 'slug')->where('slug', $slug)->first(); //slug is unique column in database
$post->title; //this line cause the error

但是,如果我使用find()方法,它可以正常工作而没有任何错误。

$post = Blog::select('id', 'title', 'slug')->find($primarykey);
$post->title; //No error

既然不能使用第二种方法,那么用first()方法检索模态时访问这些属性的最佳方法是什么?

编辑:

当我使用这两种方法dd($post)时,会看到准确的结果。
错误也记录在laravel.log文件中,我可以看到页面而没有任何问题。仅当我使用first()方法时才会发生这种情况。

编辑2:

这是我的确切代码:

$viewData['resource'] = Resource::select('id', 'resource_category_id', 'name', 'descp', 'seo_title', 'seo_keywords', 'seo_descp', 'dl_type', 'download', 'thumb', 'image', 'dl_count', 'updated_at')->with(['category' => function($q){
        $q->select('id', 'name', 'slug', 'parent_id');
    }])->where('slug', $slug)->first();
$id = $viewData['resource']->id; // this line throw error, line 126

local.ERROR: Trying to get property of non-object {"exception":"[object] (ErrorException(code: 0): Trying to get property of non-object at E:\\websites\\couponclone\\app\\Http\\Controllers\\ResourceController.php:126)

1 个答案:

答案 0 :(得分:0)

最后,我找到了答案。这是奇怪的解决方案。当您使用Laravel firstOrFail()方法时。该错误不会记录在laravel.log文件中。

因此,侦听器使用firstOrFail()而不是first()。这不会在您的laravel日志文件中记录Trying to get property of non-object错误。

我不确定为什么会这样,可能是由于PHP 7或laravel中存在错误?但这有效。