Well, entity is a type of object that is used to hold data. Each instance of entity holds exactly one row of targeted database table.

As for the directories, Symfony2 has some expectations where to find classes - that goes for entities as well. Symfony2 enforces entity syntax Bundle:EntityName, so when you say fetch me all the data from "AcmeTaskBundle:SomeEntity" it knows to look for class file at Acme\TaskBundle\Entity\SomeEntity.php

You should probably watch some tutorials on ORM first (Symfony2 uses Doctrine ORM by default), or skip data persisting altogether for now...


An entity is an object that represent the underlying data (as @perovic said: exactly one line of data from a single table, joined with data from other tables).

From Wikipedia's "Entity" definition:

A DBMS entity is either a thing in the modeled world or a drawing element in an ERD.

(The full concept of computer engineering entity is defined in Wikipedia's "Entity–relationship model" definition)

In Symfony's Documentation "The Book", chapter "Databases and Doctrine", the "product" object is the entity. It's relationship with the RDB is described under the title "Add Mapping Information".

In Symfony, the entire model (the data tier) is persisted (saved, updated) and managed through Doctrine.

This is just the main concept. More information can be found here:

(WOW. writing all that with 2 links and no images was TOUGH :P )


The entity object is an abstraction for you to interact with database. For example, instead of doing

SET title="My Book"
WHERE isbn="123456789";

You can simply access the object

/** @var $book \Acme\TaskBundle\Entity\Book **/
$book = $repository->findOneByIsbn('123456789');
$book->setTitle('My Book');

/** @var $em \Doctrine\ORM\EntityManager **/

There is a lot running behind. For more information, please consult Doctrine ORM documentation.

The Acme\TaskBundle\Entity path is the default location for Doctrine to load Entity definition.

Related Query

More Query from same tag