Timestampable не работает с базой данных ORM и PostgreSQL.

Я добавил поддержку Timestampable в свою сущность следующим образом: use Gedmo\Timestampable\Traits\TimestampableEntity;. Я обновил свою БД, запустив doctrine:schema:update --force, но каждый раз, когда я пытаюсь вставить новую запись, я получаю это сообщение:

SQLSTATE [23502]: ненулевое нарушение: 7 ОШИБКА: нулевое значение в столбце «создано в» нарушает ограничение ненулевого значения

Почему? Я использую последнюю версию Symfony 2.5.3 и PostgreSQL 9.2.9. Это полная ошибка:

Произошло исключение при выполнении «INSERT INTO usuarios_externos.usuarios (имя пользователя, имя_пользователя_каноническое, электронная почта, электронная почта_каноническая, включено, соль, пароль, последний_логин, заблокировано, истек, истекает_в, подтверждение_токен, пароль_запрошенный_ат, роли, учетные данные_истекший срок действия, учетные данные_expire_at, идентификатор, персона, correo_alternativo, telefono, telefono_movil, факс, pagina_web, направление, deleteAt, createdAt, updatedAt, pais_id, estado_id, municipio_id, ciudad_id, parroquia_id) ЗНАЧЕНИЯ (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)' с параметрами ["renier", "Ренье", "[email protected]", "[email protected]", "ложь", "hhm95if1uog88koggos48csk48k0w80", "sVzbTOHgZzhU92zPHBFsVG3GqV + DO5xvXxvNdC5 / GVJ / Hnvlm8rBsNDsIgPKYXdZ4NcnONqXnrOB6UR + lAluAw ==", NULL, "ложь", «ложь ", null, null, null, "a:0:{}", "false", null, 3, "true", "[email protected]", "021245678999", "", "", "", "sadasdasd", null, null, null, 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;
    }

}

person ReynierPM    schedule 21.08.2014    source источник
comment
Вы добавили аннотацию с отметкой времени к созданному свойству?   -  person Thomas K    schedule 21.08.2014
comment
@ThomasK да, я добавил аннотацию Timestampable, но я провел некоторое исследование, и я знаю, что PostgreSQL обрабатывает отметку времени, отличную от MySQL, как сказано здесь или здесь даже если я проверяю столбцы в БД, у них нет значений по умолчанию, в MySQL они есть   -  person ReynierPM    schedule 21.08.2014
comment
На всякий случай, можете ли вы опубликовать код для свойства createdAt с аннотациями?   -  person Thomas K    schedule 21.08.2014
comment
@ThomasK уже добавлен в основной пост   -  person ReynierPM    schedule 21.08.2014
comment
@ReynierPM, вы добавили прослушиватель gedmo в services.yml? Пример: gist.github.com/korotovsky/ebb1387e9a3e80a30a9c   -  person Dmitrii Korotovskii    schedule 21.08.2014


Ответы (1)


Вы должны включить отметку времени в своей конфигурации:

stof_doctrine_extensions:
    orm:
        default:
            timestampable: true
person Thomas K    schedule 21.08.2014
comment
Это была ошибка, но теперь я получаю другую ошибку Unable to find timestampable [created] as mapped property in entity - Sencamer\UsuarioBundle\Entity\Usuario что я пропустил? сеттер? - person ReynierPM; 22.08.2014