Привет, разработчики, В Laravel при доступе к свойству отношения мы не уверены, существуют ли данные отношения. Если существуют, то все хорошо. Но что если не существуют, то в таких случаях мы получаем следующее предупреждение;
Рассмотрим приведенный ниже код
$user = User::findOrFail(1);
$subscription = $user->subscription->created_at;
PHP Notice: Trying to get property 'created_at' of non-object in /Users/benittoraj/code/laravel/mas-laraveleval()'d code on line
Чтобы избежать этой ошибки, мы часто используем дополнительную вспомогательную функцию.
$subscriptionCreatedAt= optional($user->subscription)->created_at;
Знаете ли вы, что есть другой способ справиться с этой проблемой, используя вспомогательную функцию object_get
$subscriptionCreatedAt = object_get($user, 'subscription.created_at);
Самое приятное в вспомогательной функции object_get то, что мы можем получить доступ к свойству отношения relation, используя синтаксис точки. Таким образом, наш код выглядит чистым. Если данные отношения не существуют, она останавливается и возвращает null;
[реализация хелпера object_get](https://github.com/illuminate/support/blob/master/helpers.php#:~:text=*/-,function%20object_get(%24object%2C%20%24key%2C%20%24default,%7D,-%7D)
Продолжайте учиться!!!