存在Laravel check属性

存在Laravel check属性,laravel,properties,exists,Laravel,Properties,Exists,如何更合理地检查现有属性$this->team->playerasignment->player?现在我这样检查: if ($this->team) if (($this->team->playerAssignment)) if (($this->team->playerAssignment->player)) 尝试ISSETPHP函数 isset-确定变量是否已设置且不为空 最好的办法是 if ( isset($this->

如何更合理地检查现有属性
$this->team->playerasignment->player
?现在我这样检查:

if ($this->team)
   if (($this->team->playerAssignment))
      if (($this->team->playerAssignment->player))

尝试ISSETPHP函数

isset-确定变量是否已设置且不为空


最好的办法是

if (
    isset($this->team)
    && isset($this->team->playerAssignment)
    && isset($this->team->playerAssignment->player)
){
    // your code here...
}
因为如果第一个是to
false
,PHP将停止,如果第一个对象存在,它将继续第二个,第三个条件。。。
为什么不只使用
&&$this->team->playerasignment->player
?!因为如果玩家的值为
0
,它将被理解为
false
,但变量存在

以下几点对我来说总是最合适的:

if(isset(Auth::user()->client->id)){
        $clientId = Auth::user()->client->id;
    }
    else{
        dump('Nothing there...');
    }

您可以通过空合并运算符轻松地进行检查

if ($this->team->playerAssignment->player ?? null)

如果($this->team&&$this->team->playerasignment&&$this->team->playerasignment->player),那么
呢!!我想是一样的。如果步骤数超过3,该怎么办?如果步骤数超过3,您可以使用其他
&&
进行检查!你试过如果(isset($this->team->playerasignment->player))吗?我在laravel Blade中试过。它成功了。但在控制器设置中($this->team->playerasignment->player)总是返回false(需要详细信息或清晰性)
if ($this->team->playerAssignment->player ?? null)