我正在开发一个具有复杂模型关系的项目(Laravel)
我有超过10张桌子,上面有很多外键。
现在,当我通过许多雄辩的对象级别访问一个深层属性时,我就不得不处理错误。
以下是关系示例
Category
||
||
Product === Seller === User === Country === Region
|| || ||
|| || ||
Cart Seller Level Buyer
|| ||
|| ||
Invoice ==============================
这是一个简单的脚本,用于从指定发票(雄辩)中获得卖方/买方的国家/地区
$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
块中。也没有用。