自动创建日期-注释-Codeigniter 2和Doctrine 2

22 浏览
0 Comments

自动创建日期-注释-Codeigniter 2和Doctrine 2

我正在使用Doctrine 2和Codeigniter 2,并希望Doctrine能够自动在表中的给定字段上插入当前日期。

类文件:

created_on = date('Y-m-d H:i:s');
    }
    /* Setters & Getters */
    public function setEmail($email){ $this->email = $email; }
    public function getEmail(){ return $this->email; }
}

插入方法:

$worker = new models\Workers();
$worker->setEmail($data['email']);
$this->em->persist($worker);
$this->em->flush();

每次我在"workers"表中插入新记录时,"created_on"字段总是为NULL,而不是插入日期。我做错了什么?

0
0 Comments

问题的原因是在Codeigniter 2和Doctrine 2中,使用注解创建日期自动更新功能时出现的错误。解决方法是将注解中的类型改为datetime,即使它会被应用为带有默认值CURRENT_TIMESTAMP的timestamp类型。timestamp类型在这里是无效的。

以下是解决方法的代码示例:

/**
 *  timestamp $created_on
 * 
 * (type="datetime", default="CURRENT_TIMESTAMP")
 */
protected $created_on;

感谢提供解决方案的作者。作者在尝试解决新问题之后会尽快尝试这个解决方法。作者在尝试解决问题时遇到了另一个错误,可以在这个链接(pastebin.com/pC313P0S)中查看错误信息。有没有什么想法?

0
0 Comments

在使用CodeIgniter 2和Doctrine 2时,遇到了一个问题,即无法自动创建日期。为了解决这个问题,需要采取以下步骤:

1. 对于Doctrine 2.3版本,可以使用以下注解来解决问题:

/**
 * datetime $created_on
 * 
 * (type="datetime", options={"default"="CURRENT_TIMESTAMP"})
 */
protected $created_on;

通过使用上述注解,可以在创建实体时自动设置创建日期。

希望以上内容能够对您有所帮助。

0
0 Comments

问题出现的原因是Doctrine不支持默认值,但可以在PHP级别上进行设置。解决方法有两种:

1) 不使用Gedmo扩展,只使用Doctrine。根据Doctrine的文档,可以使用注解来设置默认值。需要编辑代码如下:

created_on = new \DateTime('now');
    }
    
    /* Setters & Getters */
    public function setEmail($email) { $this->email = $email; }
    public function getEmail() { return $this->email; }
}

2) 使用Gedmo扩展。如果选择使用Gedmo的Timestampable扩展,可以简化代码。只需要添加`Timestampable`注解即可,不需要手动设置默认值。代码如下:

email = $email; }
    public function getEmail() { return $this->email; }
}

以上是问题出现的原因和解决方法,感谢提供解决方案的作者。作者通过在属性注解中添加`@Column(type="integer", options={"default":1})`来设置默认值。

0