就在對這個問題的情況下,別人的土地(像我一樣):
拉入請求@Florian提到的把它做成主義了。雖然文檔似乎仍然缺乏任何關於ID生成器策略的信息。只有部分我發現IdGenerator的CUSTOM
選項在GeneratedValue描述中。如果我錯過了,請在評論中糾正我。
堅韌它可以很容易地實施。只需創建擴展Doctrine\ORM\Id\AbstractIdGenerator\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: ....
如果使用Annotations
,而不是YAML的,實體的配置應該看起來像這樣(未經測試):
/**
* @Id
* @Column(type="integer")
* @GeneratedValue(strategy="CUSTOM")
* @CustomIdGenerator(class="My\Namespace\MyIdGenerator")
*/
public $id;
這就是所有;)
該文章建議修改核心文件:-S – zerkms 2012-02-03 20:26:12
是的。如果不修改核心原則文件,這是不可能的,直到合併PR#206。 – Florian 2012-02-04 13:08:44
即使這不是一個好主意,你仍然可以維護自己的分支。但更糟糕的想法是混合標識符生成。 – Florian 2012-02-04 13:14:12