PHP - 返回 NULL 的日期时间会引发错误

PHP - Returning datetime of NULL throws error

我正在从数据库中提取一些数据,但我的 DateTime 字段导致了问题。

如果我设置 DateTime 字段,它 returns 没问题,但是当我将它设置为 NULL 时,它总是会抛出错误。

我的第一个代码:

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

$rows = [];

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

foreach ($results as $row) {
    $rows[] = [
        $row->getId(),
        $row->getCreated(new \DateTime())->format('Y-m-d'),
    ];
}
return $rows;
}

错误:

Call member function format on null

我的第二个更改 $row->getCreated() 作业:

$row->getCreated() ?? new \DateTime('now'))->format('Y-m-d');

这给出:

> Coalesce operator is available in PHP 7 only.

当我执行 php -v 时,它在 Symfony 3.4 上显示 PHP 7.2.19-0ubuntu0.18.04.1。以及此代码的其他语法错误。

谁能帮助我解决语法问题或告诉我如何使 datetime 在 NULL 上工作?

如果 PHP 7 在你的机器上运行,你可以这样做:

$row->getCreated() ?? (new \DateTime('now'))->format('Y-m-d');

所以在新的 \DateTime

之前有一个额外的 (

如果必须使用较低的 PHP 版本

$createdAt = $row->getCreatedAt();
if (!$createdAt) {
    $now = new DateTime('now');
    $createdAt = $now->format('Y-m-d');
}

$rows[] = [
    $row->getId(),
   $createdAt,
];