Dor*_*ian 5 php traits symfony doctrine-orm
我有一个非常标准的实体与正确的导入:
/**
* Budhaz\aMailerBundle\Entity\Instance
*
* @ORM\Table()
* @ORM\Entity
*/
class Instance {
use TimestampableEntity;
/** @ORM\Id @ORM\GeneratedValue @ORM\Column(type="integer") */
private $id;
...
}
Run Code Online (Sandbox Code Playgroud)
但我想从我的表单中删除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')
;
}
...
}
Run Code Online (Sandbox Code Playgroud)
但现在我有这个错误:
SQLSTATE [23000]:完整性约束违规:1048列'createdAt'不能为空
createdAt和updatedAt应该由Doctrine自动设置,但它保持为null,任何人都知道为什么?
ins*_*ere 11
您必须手动设置类中的值.然后你可以告诉doctrine在每次更新之前设置新值:
public function __construct() {
$this->setCreatedAt(new \DateTime());
$this->setUpdatedAt(new \DateTime());
}
/**
* @ORM\PreUpdate
*/
public function setUpdatedAtValue() {
$this->setUpdatedAt(new \DateTime());
}
Run Code Online (Sandbox Code Playgroud)
小智 5
stof_doctrine_extensions:
orm:
default:
timestampable: true
Run Code Online (Sandbox Code Playgroud)
您需要检查捆绑包是否已安装。如果没有,请运行:
composer require stof/doctrine-extensions-bundle
它应该创建文件:app/config/packages/stof_doctrine_extensions.yaml内容为:
stof_doctrine_extensions:
default_locale: en_US
orm:
default:
timestampable: true
Run Code Online (Sandbox Code Playgroud)