当我执行'doctrine:migrations:diff'时,Symfony不会'导出'字段长度,而是'255'代替'doctrine:migrations:migrate'不起作用。
我的两个实体ORM定义:
App\Resources\Domain\Stage:
type: entity
fields:
id:
type: stage_id
id: true
length: 36
name:
type: string
manyToOne:
educationalAreaId:
targetEntity: EducationalArea
joinColumn:
name: educationalAreaId
referencedColumnName: id
App\Resources\Domain\EducationalArea:
type: entity
fields:
id:
type: educational_area_id
id: true
length: 36
name:
type: string
我试图在manyToOne定义中设置'length'属性但没有成功。
(我在Ids中使用字符串类型,因为我生成UUID)
答案 0 :(得分:0)
IMO学说注释是映射实体的更方便的方法,但无论如何我认为你的字段类型有问题。 type
属性定义了用于数据库中列的映射类型,因此应该是string
,integer
,json_array
etc.
根据Doctrine文档,通常id字段与其他字段分开定义:
App\Resources\Domain\Stage:
type: entity
table: products
id:
id:
type: integer
generator:
strategy: AUTO
fields:
name:
type: string
manyToOne:
educationalAreaId:
targetEntity: EducationalArea
joinColumn:
name: educationalAreaId
referencedColumnName: id
正如它在文档中所说:"它有一个嵌套在其中的生成器标记,它指定主键生成机制应该自动使用数据库平台的本机id生成策略"。
但你可以找到其他策略here。
所以你可以试试这个:
App\Resources\Domain\Stage:
type: entity
table: products
id:
id:
type: string
length: 36
generator:
strategy: UUID
...
在我的情况下,我使用注释,它工作正常:
/**
* @var string
* @ORM\Column(name="id", type="string", length=36, options={"fixed":true})
* @ORM\Id
* @ORM\GeneratedValue(strategy="UUID")
*/
private $id;