Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Doctrine 2 association without foreign key constraints

I'm in the process of converting a legacy PHP application to Symfony 2. The application data is not very consistent at the moment, so I would like to avoid creating foreign key constraints. I have the following annotation in my "Product" entity class:

class Product {

  // some definitions

  /**
   * @ORM\ManyToOne(targetEntity="Manufacturer")
   * @ORM\JoinColumn(name="manufacturer_id", referencedColumnName="id" )
   */
  private $Manufacturer;
}

When I do app/console doctrine:schema:update, I get the SQL command

 ALTER TABLE products ADD CONSTRAINT FK_F6FA18741C3BF575 
   FOREIGN KEY (manufacturer_id) REFERENCES manufacturer(id);

How can I avoid this?

like image 671
chiborg Avatar asked Apr 08 '12 15:04

chiborg


2 Answers

I had to go through the same process recently and fortunately there is an easy solution, just add nullable=true to the column's annotation.

This will work as long as the existing data is valid, in my case I had to change 0's to NULL's and change keys that didn't exist anymore to NULL.

like image 75
Pier-Luc Gendreau Avatar answered Nov 19 '22 10:11

Pier-Luc Gendreau


Basically you can't prevent the sql commands from being generated. At least not without diving into the Doctrine code.

However, you don't need to actually apply the constraints to your database. D2 will work just fine without them.

like image 20
Cerad Avatar answered Nov 19 '22 09:11

Cerad