【发布时间】:2016-09-05 20:40:03
【问题描述】:
所以我有一个依赖 Laravel 5.2 / PHP 7.0.6 的项目,它使用 Transformers 来处理 API 响应。在我们代码的许多地方,我们使用新的 php 7 合并 (??) 运算符。但是,自从我们更新到 php 7.0.6 后,我们看到了很多以下内容:
代码:'vip_id' => $beneficiaryQdro->beneficiary->vip_id ?? ''
预期结果:11583(受益人关系的vip id)
实际结果:''
我试过运行这个:dd($beneficiaryQdro->beneficiary->vip_id),我得到了正确的 vip_id 返回。但是,当我添加合并运算符时,它再次返回一个空字符串。这以前工作过。其他人看到新的 php 版本会发生这种情况吗?
更新:我已经通过预先加载关系修复了它。 Coalesce 运算符不喜欢处理动态填写信息的关系。我不确定这会成为谁的问题。在 7.0.6 之前,合并操作符处理的关系不是急切加载就好了,但是这个更新以某种方式破坏了它。
【问题讨论】:
-
实际上我不知道问题是什么,但我是如何通过急切加载关系来解决的。 Coalesce 运算符不喜欢处理动态填写信息的关系。使用基本的 php 对象不可能复制这个问题。
-
你可以尝试先设置一个变量,比如
$vip_id =$beneficiaryQdro->beneficiary->vip_id。 -
我宁愿急切加载或延迟急切加载。我已经修好了。但是,我很好奇为什么现在才发生这种情况。 7.0.5 没有这个问题。我不介意在 PHP 或 Laravel 上添加一个错误,但老实说我不确定谁需要处理这个
-
我建议向他们俩报告。他们可能都需要意识到这一点。
标签: php laravel null-coalescing-operator