简短版:
有人知道如何使用Doctrine2进行简单的日期插入吗?我需要将一个格式为YYYY-MM-DD('Y-m-d')的日期插入到MySQL的“date”字段中。
详细版:
我有一个Doctrine2 CRUD应用程序,需要将表单提交的日期插入到MySQL数据库中。
日期是通过三个下拉菜单:年、月和日在表单中提交的。
在我的Doctrine存储库方法中,我使用date()将提交的值转换为日期,然后调用实体类中名为setCreated()的方法:
$string = $values['year'] . '-' . $values['month'] . '-' . $values['day'];
$date = date('Y-m-d', strtotime($string));
$item->setCreated($date);
在setCreated()中,首先我尝试像这样传递日期:
public function setCreated($date) {
$this->created = $date;
}
但这给我带来了一个错误信息:“在 ...Doctrine\DBAL\Types\DateType.php 中调用非对象成员函数format()”。
接下来,我尝试像这样更改setter:
public function setCreated($date) {
$this->published = new \Doctrine\DBAL\Types\DateType($date);
}
但这个也不行:"调用私有的Doctrine\DBAL\Types\Type::__construct()..."。
最后我尝试创建一个简单的日期对象来插入:
public function setCreated($date) {
$this->created = new \Date($date);
}
这给我带来了一个错误:"在Path\To\Entity\Item.php中找不到'日期'类..."。
我还尝试过没有Date前面的反斜杠的那个版本,结果给我带来了这个错误:"警告:在Path\Doctrine\Common\ClassLoader.php文件中,无法打开流,未找到Path\Entity\Date.php文件或目录...”。
(确认一下,我的include路径在php.ini中已经正确配置了——具体来说是include_path
\php\PEAR
,其中Date.php所在的位置。)在Doctrine手册中有一个关于使用DateTime实例的解释,但我不需要存储时间,只需要日期,格式为YYYY-MM-DD。
这似乎是一个非常常见的问题——有人能看出我做错了什么和/或知道如何在Doctrine2中插入日期吗?