Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/244.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PHP-访问深层对象的深层属性时,处理错误的最佳方法是什么?_Php_Laravel 5 - Fatal编程技术网

PHP-访问深层对象的深层属性时,处理错误的最佳方法是什么?

PHP-访问深层对象的深层属性时,处理错误的最佳方法是什么?,php,laravel-5,Php,Laravel 5,我正在开发一个具有复杂模型关系的项目(Laravel) 我有10多张带有许多外键的桌子。 现在,当通过多个层次的有说服力的对象访问深层属性时,我一直在处理错误。 以下是关系示例 Category || || Product === Seller === User === Country === Region || || || ||


我正在开发一个具有复杂模型关系的项目(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
在一个倒霉的日子里,脚本在
laravel.log
中尝试获取非对象的属性时出现错误
——没有错误行

调试后,我发现了问题。缺少有关访问属性的数据

第一个解决方案看起来很棘手。它正在检查所有子属性的设置

if (isset($invoice->buyer) && isset($invoice->buyer->user) && isset($invoice->buyer->user->country)) {
    // Do sth
}

我试图将上述脚本包装到
try-catch
块中。它也不能工作。

这有意义吗?@MuratTutumlu哇,它出现在5.5版。但是我的项目使用5.1:(但是,我需要检查所有属性是否有效。任何缺少的属性都必须被警告,而不是返回
null
)。