这是我的实体:
class Foo
{
/**
* @var int
* @ORMId
* @ORMColumn(name="custom_id", type="integer")
* @ORMGeneratedValue(strategy="NONE")
*/
private $customId;
public function __construct( $customId )
{
$this->customId = $customId;
}
}
现在我正在生成一个新实例
$foo = new Foo(123);
dump($foo); // shows customId: 123
$em->persist($foo);
$em->flush();
$em->clear();
执行'插入table_foo时发生了例外 (custom_id,foo,bar)value(?,?,?)'with params [null,null, null]:
SQLSTATE [23000]:违规完整性约束:1048列 'custom_id'不能为null
我知道它不会是无效的,这就是为什么我设置它。为什么学说会用零值覆盖该值?策略是无,并且发生在构造函数中...我在这里缺少什么?
有点晚一些,但是如果有人搜索它,您需要使用自定义值生成器(只需将您的内容放入插入语句)
)/**
* @var int
* @ORMId
* @ORMColumn(name="custom_id", type="integer")
* @ORMGeneratedValue(strategy="CUSTOM")
* @ORMCustomIdGenerator(class="DoctrineORMIdAssignedGenerator")
*/
private $customId;
删除
@ORMGeneratedValue(strategy="NONE")