PHP - 跳过 class null 的对象

PHP - Skip object of class null

我正在从我的数据库中提取特定实体的数据并形成与它们相关的其他表。

当数据库中的某个对象为空时,如何跳过错误?

错误是:

Call to a member function getName() on null

代码:

$results = $this->getMyRepository()->findAll();

    $rows = [];

    $rows[] = array(
        "id",
        "user",
        "category"
    );

    foreach ($results as $row) {
        $rows[] = [
            $row->getId(),
            $row->getUser()->getFullName(),
            $row->getCategory()->getName(),
        ];
    }
    return $rows;
}

您可以在使用之前简单地检查变量是否为空

 foreach ($results as $row) {
      $rows[] = [
        $row->getId(),
        $row->getUser()->getFullName(),
        !is_null($row->getCategory()->getName()) ? $row->getCategory()->getName() : '',
      ];
   }

文档:is_null

这不是错误,而是异常。 “@”运算符的错误 might be suppressed

您不能只是跳过异常。要处理它们,您需要使用 try-catch 块。

也许您想检查用户和类别是否存在。您的代码可能如下所示(使用三元运算符)。

foreach ($results as $row) {
    $rows[] = [
        $row->getId(),
        ($user = $row->getUser()) ? $user->getFullName() : null,
        ($category = $row->getCategory()) ? $category->getName() : null,
    ];
}