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,
];
我正在从数据库中提取一些数据,但我的 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,
];