我有这样定义的映射超类:
/** @ORM\MappedSuperclass */
abstract class BaseEntity {
/**
* @var string $id
*
* @ORM\Column(name="id", type="string", length=32, nullable=false)
* @ORM\Id
* @ORM\GeneratedValue(strategy="IDENTITY")
*/
protected $id;
/**
* @var datetime $dateCreated
*
* @ORM\Column(name="date_created", type="datetime", nullable=false)
*/
protected $dateCreated;
function __construct() {
$this->id = $this->generateId();
}
扩展它的子类。我得到了这个例外:
General error: 1364 Field 'id' doesn't have a default value
我在构造对象后对getId方法进行回显,并返回一个有效的字符串,这样就不是了。有趣的是,在我将相同的内容插入到同一个表中之前,我会进行查找查询。 find查询识别'id'字段,insert不会识别date_created字段。可能会发生什么?
答案 0 :(得分:3)
如果你自己生成id,你应该使用:
* @ORM\GeneratedValue(strategy="NONE")
IDENTITY
告诉学说中继数据库特定的身份生成。