[DoctrineBundle] removed README
This commit is contained in:
parent
e71eec3f5d
commit
9e4aebf3c9
@ -1,223 +0,0 @@
|
||||
DoctrineBundle
|
||||
--------------
|
||||
|
||||
This document describes some of the functionality provided by the
|
||||
**DoctrineBundle**. Doctrine 2 is a first class citizen in Symfony 2 and is
|
||||
tightly integrated. Continue reading to learn how to use Doctrine 2 with the
|
||||
latest Symfony 2!
|
||||
|
||||
## Configuration
|
||||
|
||||
This section will help you with configuring your Symfony 2 project to enable
|
||||
the Doctrine DBAL and ORM services.
|
||||
|
||||
### Database Abstraction Layer
|
||||
|
||||
You can configure your database abstraction layer simply configuration a few
|
||||
pieces of information about your database. If you only have one database you can
|
||||
do the following:
|
||||
|
||||
[yml]
|
||||
doctrine.dbal:
|
||||
dbname: symfony_guestbook
|
||||
user: root
|
||||
password: ~
|
||||
|
||||
Or if you want to use XML instead of YAMl it would look like this:
|
||||
|
||||
<doctrine:dbal dbname="symfony_guestbook" user="root" password="" />
|
||||
|
||||
Or if you have multiple connections and want to customize the configuration of the
|
||||
connection further you can use the following:
|
||||
|
||||
[yml]
|
||||
doctrine.dbal:
|
||||
default_connection: default
|
||||
connections:
|
||||
default:
|
||||
driver: PDOSqlite # PDOSqlite, PDOMySql, PDOMsSql, PDOOracle, PDOPgSql, OCI8
|
||||
dbname: symfony_guestbook
|
||||
user: root
|
||||
password: null
|
||||
host: localhost
|
||||
port: ~
|
||||
path: %kernel.data_dir%/symfony.sqlite
|
||||
event_manager_class: Doctrine\Common\EventManager
|
||||
configuration_class: Doctrine\DBAL\Configuration
|
||||
wrapper_class: ~
|
||||
options: []
|
||||
|
||||
You can also specify multiple connections using the XML format:
|
||||
|
||||
<doctrine:dbal default_connection="default">
|
||||
<doctrine:connection id="default" dbname="symfony_guestbook" user="root" password="" />
|
||||
</doctrine:dbal>
|
||||
|
||||
### Object Relational Mapper
|
||||
|
||||
If you want to enable the Doctrine 2 ORM you can do so with the following:
|
||||
|
||||
doctrine.orm:
|
||||
default_entity_manager: default
|
||||
cache_driver: apc # array, apc, memcache, xcache
|
||||
entity_managers:
|
||||
default:
|
||||
connection: default
|
||||
|
||||
It's pretty simple, you can specify which entity managers you want to instantiate
|
||||
for which connections and also configure some other information about the ORM
|
||||
like what type of mapping files to use or what cache driver to use.
|
||||
|
||||
## Creating a Bundle
|
||||
|
||||
To get started we need to create a new bundle:
|
||||
|
||||
$ php console init:bundle "Bundle\\GuestbookBundle"
|
||||
Initializing bundle "GuestbookBundle" in "/path/to/symfony-sandbox/src/Bundle"
|
||||
|
||||
Now basically the most important thing to know about using Doctrine 2 with Symfony
|
||||
is where to put your mapping information files, where your entity classes are and
|
||||
a few commands to help move things faster!
|
||||
|
||||
## Mapping Information
|
||||
|
||||
You can place all your mapping information inside a bundle. Below is an example
|
||||
path for the **GuestbookBundle** we created above:
|
||||
|
||||
/path/to/symfony-sandbox/src/Bundle/GuestbookBundle/Resources/config/doctrine/metadata
|
||||
|
||||
Any files found in here that have a suffix of **.dcm.xml** (or whatever
|
||||
mapping_driver you picked) are used as your entities mapping information.
|
||||
|
||||
In the **GuestbookBundle** we have a file named **Bundle.GuestbookBundle.Entity.Entry.dcm.xml**
|
||||
which contains the following XML:
|
||||
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
|
||||
<doctrine-mapping xmlns="http://doctrine-project.org/schemas/orm/doctrine-mapping"
|
||||
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
||||
xsi:schemaLocation="http://doctrine-project.org/schemas/orm/doctrine-mapping
|
||||
http://www.doctrine-project.org/schemas/orm/doctrine-mapping.xsd">
|
||||
|
||||
<entity name="Bundle\GuestbookBundle\Entity\Entry" table="guestbook_entry">
|
||||
|
||||
<id name="id" type="integer" column="id">
|
||||
<generator strategy="AUTO"/>
|
||||
</id>
|
||||
|
||||
<field name="createdAt" column="created_at" type="datetime" />
|
||||
<field name="name" column="name" type="string" length="255" />
|
||||
<field name="emailAddress" column="email_address" type="string" length="255" />
|
||||
<field name="body" column="body" type="text" />
|
||||
|
||||
</entity>
|
||||
|
||||
</doctrine-mapping>
|
||||
|
||||
## Generating Entities
|
||||
|
||||
Doctrine can help you a little bit by generating the entity classes for your
|
||||
mapping information with the command:
|
||||
|
||||
$ php console doctrine:generate:entities
|
||||
|
||||
Now if you have a look in the bundles **Entity** directory you will see a new
|
||||
file named **Entry.php** with some code like the following:
|
||||
|
||||
[php]
|
||||
// Bundle/GuestbookBundle/Entity/Entry.php
|
||||
|
||||
namespace Bundle\GuestbookBundle\Entity;
|
||||
|
||||
/**
|
||||
* @Entity
|
||||
* @Table(name="guestbook_entry")
|
||||
*/
|
||||
class Entry
|
||||
{
|
||||
/**
|
||||
* @Column(name="created_at", type="datetime")
|
||||
*/
|
||||
private $createdAt;
|
||||
|
||||
/**
|
||||
* @Column(name="name", type="string", length=255)
|
||||
*/
|
||||
private $name;
|
||||
|
||||
// ...
|
||||
|
||||
> **NOTE**
|
||||
> If you modify your mapping information and re-run the build entities command
|
||||
> it will modify the classes and update them based on the mapping information.
|
||||
|
||||
## Commands
|
||||
|
||||
The Doctrine 2 CLI is integrated with the Symfony 2 CLI so we have all the common
|
||||
commands we need to make working with Doctrine 2 just as easy and fast as before!
|
||||
|
||||
### Listing Available Doctrine Commands
|
||||
|
||||
$ php console list doctrine
|
||||
|
||||
Available commands for the "doctrine" namespace:
|
||||
:cache:clear-metadata Clear all metadata cache for a entity manager.
|
||||
:cache:clear-query Clear all query cache for a entity manager.
|
||||
:cache:clear-result Clear result cache for a entity manager.
|
||||
:data:load Load data fixtures to your database.
|
||||
:database:create Create the configured databases.
|
||||
:database:drop Drop the configured databases.
|
||||
:ensure-production-settings Verify that Doctrine is properly configured for a production environment.
|
||||
:generate:entities Generate entity classes and method stubs from your mapping information.
|
||||
:generate:entity Generate a new Doctrine entity inside a bundle.
|
||||
:generate:proxies Generates proxy classes for entity classes.
|
||||
:generate:repositories Generate repository classes from your mapping information.
|
||||
:mapping:convert Convert mapping information between supported formats.
|
||||
:mapping:convert-d1-schema Convert a Doctrine 1 schema to Doctrine 2 mapping files.
|
||||
:mapping:import Import mapping information from an existing database.
|
||||
:query:dql Executes arbitrary DQL directly from the command line.
|
||||
:query:sql Executes arbitrary SQL directly from the command line.
|
||||
:schema:create Processes the schema and either create it directly on EntityManager Storage Connection or generate the SQL output.
|
||||
:schema:drop Processes the schema and either drop the database schema of EntityManager Storage Connection or generate the SQL output.
|
||||
:schema:update Processes the schema and either update the database schema of EntityManager Storage Connection or generate the SQL output.
|
||||
|
||||
### Schema Tool
|
||||
|
||||
The schema tool in Doctrine 2 allows you to easily drop and create your
|
||||
database schemas for your mapping information.
|
||||
|
||||
You can easily create your initial schema from mapping information:
|
||||
|
||||
php console doctrine:schema:create
|
||||
|
||||
Or if you want to then drop your schema you can do:
|
||||
|
||||
php console doctrine:schema:drop
|
||||
|
||||
Now the scenario arrises where you want to change your mapping information and
|
||||
update your database without blowing away everything and losing your existing data.
|
||||
You can do the following for that:
|
||||
|
||||
php console doctrine:schema:update
|
||||
|
||||
> **TIP**
|
||||
> The above will not drop anything from your database schema. To drop the remaining
|
||||
> things from your schema you need to use the **--complete** option.
|
||||
>
|
||||
> php console doctrine:schema:update --complete
|
||||
|
||||
### Doctrine Generate Entity Command
|
||||
|
||||
You can easily generate a new Doctrine entity for a bundle by using the
|
||||
**doctrine:generate-entity** command:
|
||||
|
||||
$ php console doctrine:generate:entity "Bundle\MySampleBundle" "User\Group" --fields="name:string(255) description:text"
|
||||
|
||||
Now if you have a look inside the bundle you will see that you have a **Group** class
|
||||
located here **Bundle/MySampleBundle/Entity/User/Group.php**.
|
||||
|
||||
Now you can customize the mapping information for the entity by editing the metadata
|
||||
information inside **Bundle/MySampleBundle/Resources/config/doctrine/metadata** and
|
||||
just update your database schema:
|
||||
|
||||
$ php console doctrine:schema:update
|
Reference in New Issue
Block a user