5

私は正しいインポートを持つかなり標準的なエンティティを持っています:

/**
 * Budhaz\aMailerBundle\Entity\Instance
 *
 * @ORM\Table()
 * @ORM\Entity
 */
class Instance {
    use TimestampableEntity;

    /** @ORM\Id @ORM\GeneratedValue @ORM\Column(type="integer") */
    private $id;
...
}

ただし、createdAt(およびupdatedAt)をフォームから削除して、ユーザーが設定できないようにしたいので、InstanceFormから削除します。

class InstanceType extends AbstractType
{
    public function buildForm(FormBuilderInterface $builder, array $options)
    {
        $builder
            ->add('name')
            ->add('startAt')
            ->add('endAt')
            //->add('createdAt')
            //->add('updatedAt')
            ->add('campaign')
        ;
    }
...
}

しかし今、私はこのエラーがあります:

SQLSTATE [23000]:整合性制約違反:1048列'createdAt'をnullにすることはできません

createdAtとupdatedAtはDoctrineによって自動的に設定される必要がありますが、nullのままです、誰もが理由を知っていますか?

4

3 に答える 3

12

クラス内の値を手動で設定する必要があります。次に、各更新の前に新しい値を設定するように教義に指示できます。

public function __construct() {
    $this->setCreatedAt(new \DateTime());
    $this->setUpdatedAt(new \DateTime());
}

/**
 * @ORM\PreUpdate
 */
public function setUpdatedAtValue() {
    $this->setUpdatedAt(new \DateTime());
}
于 2013-02-19T11:34:32.533 に答える