我正在使用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)
答案 0 :(得分:0)
最后,我找到了答案。这是奇怪的解决方案。当您使用Laravel firstOrFail()
方法时。该错误不会记录在laravel.log
文件中。
因此,侦听器使用firstOrFail()
而不是first()
。这不会在您的laravel日志文件中记录Trying to get property of non-object
错误。
我不确定为什么会这样,可能是由于PHP 7或laravel中存在错误?但这有效。