Я использую laravel 5.6 с PHP 7.1.
Laravel выбрасывает ErrorException Trying to get property of non-object
, когда я пытаюсь получить доступ к свойству сообщения, полученного с помощью метода eloquent 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)
с этими 2 методами, я вижу точный результат.
Также ошибка регистрируется в файле laravel.log
, и я вижу страницу без проблем.Это происходит только тогда, когда я использую метод first()
.
Edit 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)