Doctrine Entity Table Names & Linux

05 September 2012

As I was glancing over a past article I’d written, [Mapping Entities in Symfony2][mapping-entities], I noticed that I had only briefly mentioned the Doctrine @Table(name="your-table-name") annotation. [mapping-entities]: /2011/12/mapping-entities-in-symfony2.html

Many of you who use the Symfony console commands to quickly create your Entities will notice that the @Table(name="") is not included by default on Entities. Just recently I was starting a new application with ~20 Entities to generate. Using the entity generator (seen below) was a huge time-saver, begin by typing the following into terminal.

php app/console doctrine:generate:entity --entity="kurtfunaiExampleBundle:MyEntityName"

I primarily develop on a Mac where case sensitivity in MySQL is non-existant. The tablenames in my schema are all lower case, and separated by underscores (ex: user, user_type).

I launched the app on our staging server (running Ubuntu). Immediately the exceptions started popping up:

SQLSTATE[42S02]: Base table or view not found: 1146 Table 'my_database.User' doesn't exist

It is a minor issue, and luckily very easy to fix!… Declare your table names in your entities!

/**
 * kurtfunai\ExampleBundle\Entity\User
 *
 * @ORM\Table()
 * @ORM\Entity
 * @ORM\Table(name="user")
 */
class User
{

That’s it, your table-name issues will be solved!

blog comments powered by Disqus