In Doctrine you are provided with a Constant Variable that allows you to set a global Identifier column in all of the models that are generated by Doctrine's code. I am trying to figure out how I can override/shut off this value so that it does not create this column in a specific table.
The Constant is:
ATTR_DEFAULT_IDENTIFIER_OPTIONS
It gets set in a bootstrapped PHP file and it automatically creates the appropriate table in your Database.
Example Code:
// 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));
But what if I had a table/model that I did not need an "id" column for?
Doctrine will create this
id
column only if you didn't specify any other columns as primary key.If, for example you use:
It would generate a column named
id
as the primary key, as you didnt set any PKs in the schema.But if, instead, you use:
The secound example would not generate the
id
, so you dont even need to override any constant. This leads to a "problem" though, as Doctrine forces you to have at least one primary key on your tables, one way or another. It just enforces good practice :)