我想用 MySql 日期时间列中的 Propel 将记录的日期时间值重置为其默认值0000-00-00 00:00:00
。这就是我尝试过的方式。
$zeroDate = new DateTime();
$zeroDate->setDate(0, 0, 0);
$zeroDate->setTime(0, 0, 0);
$changedRow = BookQuery::create()->findPk($bookId)->setPublishedAt($zeroDate);
if($changedRow->isModified()) {
try {
$changedRow->save();
} catch (Exception $exc) {
$this->logger->debug(__METHOD__ . " " . $exc->getMessage());
}
}
我也试过这个。
$changedRow = BookQuery::create()->findPk($bookId)->setPublishedAt("0000-00-00 00:00:00");
if($changedRow->isModified()) {
try {
$changedRow->save();
} catch (Exception $exc) {
$this->logger->debug(__METHOD__ . " " . $exc->getMessage());
}
}
两种变体都会产生错误
Unable to execute UPDATE statement [...]: Invalid datetime format: 1292 Incorrect datetime value: '-0001-11-30 00:00:00' for column 'published_at' at row 1]
因为 Propel 试图插入负的日期时间值。如何使用 Propel 正确重置这些字段?