PHP Fatal error: Call to a member function format() on string
PHP Fatal error: Call to a member function format() on string
我正在尝试使用 Doctrine 将日期保存到 SQL 数据库中。
用户使用日期选择器将日期写入输入字段,它们的格式为 dd.mm.yyyy(德语)。在数据库中,日期看起来像这样 "2021-09-30"
或这个 "0000-00-00"
如果没有给出日期
我正在使用此代码将输入数据设置为实体:
if(isset($formData["startDate"]) and $formData["startDate"] != "") {
$sD = explode(".", $formData["startDate"]);
$campaign->setStartDate(($sD[2]."-".$sD[1]."-".$sD[0]));
} else {
$campaign->setStartDate("0000-00-00")
}
但这会产生错误 Fatal error: Call to a member function format() on string
。
如何将日期保存到我的数据库?
这是字段 getter/setter:
/**
* @ORM\Column(type="date")
*/
protected $startDate;
/**
* Set startDate
*
* @param integer $startDate
* @return Campaign
*/
public function setStartDate($startDate)
{
$this->startDate = $startDate;
return $this;
}
/**
* Get startDate
*
* @return integer
*/
public function getStartDate()
{
return $this->startDate;
}
首先,你可以用\DateTimeInterface
定义你的setter/getter,像这样
/**
* @ORM\Column(type="datetime", options={"default":"0000-00-00 00:00:00"})
*/
protected $startDate;
/**
* Set startDate
*
* @param \DateTimeInterface $startDate
* @return Campaign
*/
public function setStartDate(\DateTimeInterface $startDate)
{
$this->startDate = $startDate;
return $this;
}
/**
* Get startDate
*
* @return \DateTimeInterface
*/
public function getStartDate()
{
return $this->startDate;
}
那么,你应该会有更好的输出。请注意 0000-00-00 00:00:00
是无效日期...
对于你的错误,你可以这样做
if(isset($formData["startDate"]) && !empty($formData["startDate"])) {
$date = DateTime::createFromFormat('Y\.m\.d', $formData["startDate"]);
} else {
$date = new DateTime('now');
}
$campaign->setStartDate($date);
希望对您有所帮助
我正在尝试使用 Doctrine 将日期保存到 SQL 数据库中。
用户使用日期选择器将日期写入输入字段,它们的格式为 dd.mm.yyyy(德语)。在数据库中,日期看起来像这样 "2021-09-30"
或这个 "0000-00-00"
如果没有给出日期
我正在使用此代码将输入数据设置为实体:
if(isset($formData["startDate"]) and $formData["startDate"] != "") {
$sD = explode(".", $formData["startDate"]);
$campaign->setStartDate(($sD[2]."-".$sD[1]."-".$sD[0]));
} else {
$campaign->setStartDate("0000-00-00")
}
但这会产生错误 Fatal error: Call to a member function format() on string
。
如何将日期保存到我的数据库?
这是字段 getter/setter:
/**
* @ORM\Column(type="date")
*/
protected $startDate;
/**
* Set startDate
*
* @param integer $startDate
* @return Campaign
*/
public function setStartDate($startDate)
{
$this->startDate = $startDate;
return $this;
}
/**
* Get startDate
*
* @return integer
*/
public function getStartDate()
{
return $this->startDate;
}
首先,你可以用\DateTimeInterface
定义你的setter/getter,像这样
/**
* @ORM\Column(type="datetime", options={"default":"0000-00-00 00:00:00"})
*/
protected $startDate;
/**
* Set startDate
*
* @param \DateTimeInterface $startDate
* @return Campaign
*/
public function setStartDate(\DateTimeInterface $startDate)
{
$this->startDate = $startDate;
return $this;
}
/**
* Get startDate
*
* @return \DateTimeInterface
*/
public function getStartDate()
{
return $this->startDate;
}
那么,你应该会有更好的输出。请注意 0000-00-00 00:00:00
是无效日期...
对于你的错误,你可以这样做
if(isset($formData["startDate"]) && !empty($formData["startDate"])) {
$date = DateTime::createFromFormat('Y\.m\.d', $formData["startDate"]);
} else {
$date = new DateTime('now');
}
$campaign->setStartDate($date);
希望对您有所帮助