你如何覆盖主义的模型恒?(How do you override a Constant in Doc

2019-10-19 01:58发布

在教义为您提供了一个常变量,可以让你在所有被学说的代码生成的模型的设置全局标识符列。 我试图找出如何我可以覆盖/关闭此值,这样它不会在特定的表中创建此列。

不变的是:

ATTR_DEFAULT_IDENTIFIER_OPTIONS

它得到一个自举PHP文件中设置并在数据库中自动创建相应的表。

示例代码:

// set the default primary key to be named 'id', integer, 4 bytes, Auto Increment = true
Doctrine_Manager::getInstance()->setAttribute(
Doctrine::ATTR_DEFAULT_IDENTIFIER_OPTIONS,
array('name' => 'id', 'type' => 'integer', 'length' => 4, 'autoincrement' => true));

但是,如果我有一个表/模型,我并不需要一个“ID”列?

Answer 1:

学说将创建这个id列只如果没有指定任何其他列作为主键。

例如如果你使用:

Example:
  tableName: examples
  columns:
    sometext: string(12)
    somedate: date(25)
    sometimestamp: timestamp(25)

它会生成一个名为列id作为主键,因为你没有在架构设置任何的PK。

但是,如果相反,你使用:

Example:
  tableName: example
  columns:
    someint:
      type: integer(10)
      primary: true
    sometext: string(12)
    somedate: date(25)
    sometimestamp: timestamp(25)

该谢胜利,例如不会产生id ,所以你甚至不需要重写任何常数。 这导致了“问题”不过,因为教义的力量,你有你的表至少一个主键,这种或那种方式。 它只是强制很好的做法:)



文章来源: How do you override a Constant in Doctrine's Models?