Laravel 检查属性是否存在。

6
我可以帮您更加合理地检查现有属性 $this->team->playerAssignment->player 吗?现在我是这样检查的:
if ($this->team)
   if (($this->team->playerAssignment))
      if (($this->team->playerAssignment->player))

1
如果 ($this->team && $this->team->playerAssignment && $this->team->playerAssignment->player) 怎么样?! - Maraboc
我认为它是一样的。如果步骤超过3怎么办? - Igor Ostapiuk
如果步骤超过3个,您可以使用其他&&进行检查! - Hiren Gohel
你尝试过 if(isset($this->team->playerAssignment->player)) 吗? - Artem Zhuravlev
我在Laravel的Blades中尝试了它,而且它也起作用了。但是在控制器中,isset($this->team->playerAssignment->player)总是返回false。 - Igor Ostapiuk
4个回答

18

尝试使用isset php函数。

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


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

}

2
以下方法一直都是最适合我的:

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

1

最好的方法是

if (
    isset($this->team)
    && isset($this->team->playerAssignment)
    && isset($this->team->playerAssignment->player)
){
    // your code here...
}

因为PHP会在第一个条件为false时停止,如果第一个对象存在,则会继续第二个和第三个条件...为什么不仅使用&& $this->team->playerAssignment->player呢?因为如果玩家的值为0,它将被理解为false但变量存在!


0
您可以轻松使用空值合并运算符进行检查。
if ($this->team->playerAssignment->player ?? null)

需要更多的细节或清晰度。 - Babak Asadzadeh

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接