Blade 的 OR 语句总是回显默认值

Blade's OR statement always echoing default

我有一个代码在 PHP 中运行良好 5. 但是我更新了我的系统,现在我正在使用 PHP 7. 这个问题发生在每个使用 or语句和变量不是直接从对象中读取的。在这种情况下,Blade 总是回显默认值。

例如:

{{$obj->customer->state->name or '-'}}

结果 PHP 5:

Santa Catarina

结果 PHP 7:

-

我正在使用 Laravel 5.1 并且数据库中存储的所有数据对于两个结果都是相同的。有什么想法吗?

试试这个:

{{$obj->customer->state->name ?? '-'}}

这是 PHP 7

中的新功能

http://php.net/manual/en/migration70.new-features.php#migration70.new-features.null-coalesce-op

你应该试试这个

{{isset($obj->customer->state->name) ? $obj->customer->state->name : '-'}}