以防其他人在这个问题上(就像我一样):
@Florian提到的拉取请求现在已经变成了教义。尽管文档似乎仍然缺少有关自定义 ID 生成器策略的任何信息。我只找到提到IdGenerator选项的部分是在GenerationValue描述中。如果我错过了它,请在评论中纠正我。CUSTOM
坚固耐用,可以轻松实现。只需创建一个扩展的类:Doctrine\ORM\Id\AbstractIdGenerator
namespace My\Namespace;
use Doctrine\ORM\Id\AbstractIdGenerator;
class MyIdGenerator extends AbstractIdGenerator
{
public function generate(\Doctrine\ORM\EntityManager $em, $entity)
{
// Create id here
$id = <do some logic>;
return $id;
}
}
然后将其添加到教义实体配置(示例)中的描述中:id
YAML
My\Bundle\Entity\MyEntity:
type: entity
id:
id:
type: bigint
unique: true
generator:
strategy: CUSTOM
customIdGenerator:
class: 'My\Namespace\MyIdGenerator'
fields:
otherField: ....
如果使用而不是 YAML,则实体配置应如下所示(未经测试):Annotations
/**
* @Id
* @Column(type="integer")
* @GeneratedValue(strategy="CUSTOM")
* @CustomIdGenerator(class="My\Namespace\MyIdGenerator")
*/
public $id;
这就是;)