Я занимаюсь разработкой проекта со сложными отношениями модели (Laravel)
У меня более 10 таблиц с множеством внешних ключей.
Теперь я застрял в обработке ошибки при доступе к глубокому свойствучерез много уровней красноречивых объектов. Ниже приведен пример отношений
Category
||
||
Product === Seller === User === Country === Region
|| || ||
|| || ||
Cart Seller Level Buyer
|| ||
|| ||
Invoice ==============================
Вот простой скрипт для получения страны продавца / покупателя по указанному счету - Eloquent
$invoice = Invoice::find($id);
$countrySeller = $invoice->cart->product->seller->user->country; //6 levels
$countryBuyer = $invoice->buyer->user->country; // 4 levels
В неудачный день скрипт получил ошибку Trying to get property of non-object
в laravel.log
- без строки ошибки.
После отладки обнаружил проблему.Отсутствуют данные о доступе к свойству.
Первое решение выглядит странным.Это проверка установлена для всех дочерних свойств
if (isset($invoice->buyer) && isset($invoice->buyer->user) && isset($invoice->buyer->user->country)) {
// Do sth
}
Я пытался обернуть вышеупомянутый скрипт в блок try-catch
.Это тоже не сработало.