无法将DateTime对象保存到MySQL中的datetime字段

时间:2012-09-05 13:21:46

标签: php mysql datetime redbean

这是我的MySQL数据库的数据库架构:

create table noticia 
(
    id int,
    imagen varchar(255),
    fecha datetime,
    titulo varchar(255),
    url varchar(255),
    descripcion varchar(255),
    contenido text
) 

我正在使用RedBeanPHP作为我的ORM来将信息保存到数据库中。这是我根据documentation抓取并解析日期到DateTime对象的位置。

foreach ($element->find('span.fechanoticia') as $fecha) {
   $tmp = str_replace("/", "-", $fecha->innertext);
   print_r($tmp);

   $dateFoo = new DateTime($tmp);
   echo $dateFoo->format('Y-m-d H:i:s');

   $newItem->set_fechanoticia($dateFoo);
}

$tmp变量此值例如:

05-09-2012

echo格式调用返回:

2012-09-05 00:00:00

一切都很好,很有效。

但是当我尝试使用RedBeanPHP将其保存到数据库时,我收到此错误:

  

致命错误:未捕获异常'RedBean_Exception_Security'   消息'Invalid Bean:property fecha'in   C:\ xampp \ htdocs \ blog-uvm \ rb.php:4880堆栈跟踪:#0   C:\ XAMPP \ htdocs中\博客,UVM \ rb.php(5108):   RedBean_OODB-> check(Object(RedBean_OODBBean))#1   C:\ XAMPP \ htdocs中\博客,UVM \ rb.php(5082):   RedBean_OODB-> storeBean(Object(RedBean_OODBBean))#2   C:\ XAMPP \ htdocs中\博客,UVM \ rb.php(7005):   RedBean_OODB-> store(Object(RedBean_OODBBean))#3   C:\ XAMPP \ htdocs中\博客,UVM \的index.php(60):   RedBean_Facade :: store(Object(RedBean_OODBBean))#4 {main}抛出   第4880行的C:\ xampp \ htdocs \ blog-uvm \ rb.php

RedBeanPHP可以不处理日期时间对象吗?

2 个答案:

答案 0 :(得分:4)

根据RedBean's documentation更多数据类型),您只能保存DateTime个字符串形式的对象。

例如:

// It's a string - not a DateTime.
$photo->created = '1995-12-05 19:00:00';

在这种情况下,解决方案应该是保存格式化的字符串,而不是DateTime对象本身:

$newItem->set_fechanoticia($dateFoo->format('Y-m-d H:i:s'));

答案 1 :(得分:0)

发现了这个:http://groups.google.com/group/redbeanorm/browse_thread/thread/6961ac635e6886f6

The Optimizer will now convert columns with datetime values to datetimefields. If a different value is inserted the column will be reverted by OODB in fluid mode.