我使用实体
id:
id:
type: string
length: 36
id: true
generator:
strategy: UUID
所以我没有 setId() -Method。在测试时,这是我创建实体的方式:
$person = new Person();
$person->setFirsname('Foo');
...
$manager->persit($person);
// no flush
我试过
$metadata = $manager->getClassMetaData('Acme\Entities\Person');
$metadata->setIdGenerator(new AssignedGenerator());
$person = new Person();
....
但是它说它缺少一个已分配的ID,但我不能在没有 setId()的情况下设置它(我不想在我的实体中使用 setId() )。
答案 0 :(得分:0)
我用Generators实验了一下,并尝试了这个:
...
use Doctrine\ORM\EntityManager;
use Doctrine\ORM\Id\AbstractIdGenerator;
class AutoIncGenerator extends AbstractIdGenerator
{
public $count = 0;
public function generate(EntityManager $em, $entity)
{
$this->count++;
return $this->count;
}
}
它完全符合我的需要。每个对象都有一个带有独占号码范围的id(auto inc)。
不需要 flush()或 setId()。