can*_*era 2 php mysql date insert doctrine-orm
精简版:
有谁知道如何使用Doctrine2进行简单的日期插入?我需要将格式为YYYY-MM-DD('Ym-d')的日期插入MySQL'日期'字段.
如果你已经知道如何做到这一点,你可以跳过下面我到目前为止尝试过的解释.否则,关于我的问题的更多细节将在休息之后.
长版:
我有一个Doctrine2 CRUD应用程序,需要将表单提交日期插入MySQL数据库.
日期使用三个下拉菜单以表格形式提交:年,月和日.
在我的Doctrine存储库方法中,我使用date()将提交的值转换为日期,然后在我的实体类中调用名为setCreated()的方法:
$string = $values['year'] . '-' . $values['month'] . '-' . $values['day'];
$date = date('Y-m-d', strtotime($string));
$item->setCreated($date);
Run Code Online (Sandbox Code Playgroud)
然后在setCreated()中,首先我尝试传递这样的日期:
public function setCreated($date) {
$this->created = $date;
}
Run Code Online (Sandbox Code Playgroud)
但是,这给了我这个错误信息:"调用一个成员函数的格式()在...学说\ DBAL \类型\ DateType.php一个非对象".
接下来我尝试改变这样的setter:
public function setCreated($date) {
$this->published = new \Doctrine\DBAL\Types\DateType($date);
}
Run Code Online (Sandbox Code Playgroud)
但这也不起作用:"调用私有Doctrine\DBAL\Types\Type :: __ construct()......"
最后我尝试创建一个简单的Date对象来插入:
public function setCreated($date) {
$this->created = new \Date($date);
}
Run Code Online (Sandbox Code Playgroud)
这给了我这个错误:在Path\To\Entity\Item.php中找不到"类'日期'......"
我也尝试了上面的版本没有Date的反斜杠,这给了我这个错误:"警告:require(Path\Entity\Date.php)无法打开流.在Path\Doctrine\Common\ClassLoader中没有这样的文件或目录.PHP ......"
(为了确认,我的包含路径在php.ini中正确配置 - 特别是include_path \php\PEAR,这是Date.php所在的位置.)
这里有一个解释的教义手册有关使用日期时间情况下工作,但我并不需要存储的时候,只是日期YYYY-MM-DD.
这似乎是一个非常普遍的问题 - 有人看到我做错了什么和/或知道如何在Doctrine2中插入日期?
你太关心你的数据库了.只需创建DateTime实例并将其作为值分配给类型的对象属性DateTime.
数据库将按照您的定义存储它,所以不用担心.
如果您将其YYYY-MM-DD格式化为格式化的字符串值,您将看到它存储了.
Doctrine是从具体的数据库中抽象出来的,因此在使用它时不要过多担心数据库.