1

Timestampable我在我的实体中添加了对如下的支持: use Gedmo\Timestampable\Traits\TimestampableEntity;. 我已经通过运行更新了我的数据库,doctrine:schema:update --force但是每当我尝试插入新记录时,我都会收到以下消息:

SQLSTATE [23502]:非空违规:7 错误:“createdat”列中的空值违反非空约束

为什么?我正在使用最新的 Symfony 2.5.3 和 PostgreSQL 9.2.9。这是完整的错误:

执行'INSERT INTO usuarios_externos.usuarios(用户名,username_canonical,电子邮件,email_canonical,启用,盐,密码,last_login,锁定,过期,expires_at,confirmation_token,password_requested_at,角色,credentials_expired,credentials_expire_at,id,persona,correo_alternativo, telefono, telefono_movil, 传真, pagina_web, direccion, deletedAt, createdAt, updatedAt, pais_id, estado_id, municipio_id, ciudad_id, parroquia_id) 值 (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)' with params ["reynier", “reynier”、“reynierpm@gmail.com”、“reynierpm@gmail.com”、“假”、“hhm95if1uog88koggos48csk48k0w80”、“sVzbTOHgZzhU92zPHBFsVG3GqV+DO5xvXxvNdC5/GVJ/Hnvlm8rBsNDsIgPKYXdZ4NcnONqXnrOB6UR+lAluAw==", null, "false", "false", null, null, null, "a:0:{}", "false", null, 3, "true", “reynierpm1@gmail.com”、“021245678999”、“”、“”、“”、“sadasdasd”、空、空、空、23、1、1、1、22]

有什么建议吗?

添加的实体

<?php

use FOS\UserBundle\Model\User as BaseUser;
use Gedmo\Mapping\Annotation as Gedmo;
use Doctrine\ORM\Mapping as ORM;

/**
 * @ORM\Entity
 * @ORM\Table(name="usuarios_externos.usuarios", schema="usuarios_externos")
 * @Gedmo\SoftDeleteable(fieldName="deletedAt", timeAware=false)
 */
class Usuario extends BaseUser
{

    ....

    /**
     * @var datetime $created
     *
     * @Gedmo\Timestampable(on="create")
     * @ORM\Column(type="datetime")
     */
    private $created;

    /**
     * @var datetime $updated
     *
     * @Gedmo\Timestampable(on="update")
     * @ORM\Column(type="datetime")
     */
    private $updated;

    /**
     * @ORM\Column(name="deletedAt", type="datetime", nullable=true)
     */
    protected $deletedAt;

    ....

    public function getCreated()
    {
        return $this->created;
    }

    public function getUpdated()
    {
        return $this->updated;
    }

    public function setDeletedAt($deletedAt)
    {
        $this->deletedAt = $deletedAt;
    }

    public function getDeletedAt()
    {
        return $this->deletedAt;
    }

}
4

1 回答 1

7

您应该在配置中启用时间戳:

stof_doctrine_extensions:
    orm:
        default:
            timestampable: true
于 2014-08-21T19:57:58.897 回答