Symfony Database Cookbook: Difference between revisions
Jump to navigation
Jump to search
No edit summary |
|||
| Line 62: | Line 62: | ||
* [http://tutorials.dbarchowsky.com Tutorials database]: `Tutorial` and `TutorialGroup` classes. | * [http://tutorials.dbarchowsky.com Tutorials database]: `Tutorial` and `TutorialGroup` classes. | ||
== Selectively retrieving object properties == | |||
By default Doctrine retrieves all the properties for an object.<ref>[http://www.uvd.co.uk/blog/some-doctrine-2-best-practices/ Some Doctrine 2 Best Practices], UVD<br />#4 By default Doctrine will fetch all of the properties for a given entity</ref> | |||
<syntaxhighlight lang="php"> | |||
$qb = $em->createQueryBuilder(); | |||
// You can select multiple properties in the partial statement | |||
$qb | |||
->select('partial Article.{id,title,summary}') | |||
->from('Entity\Article') | |||
; | |||
</syntaxhighlight> | |||
== Notes == | == Notes == | ||
<references/> | <references/> | ||
Revision as of 13:42, 10 February 2015
Creating classes with Doctrine
A command line shortcut for the process of creating an entity class described in Generating Database Tables and/or Schema:
$ php app/console doctrine:generate:entity --entity="AppBundle:Category" --fields="name:string(100)"
Specifying foreign keys between tables
First create a property within the category/group/type class that will hold the records linked to it.[1]
// src/AppBundle/Entity/Category.php
// ...
use Doctrine\Common\Collections\ArrayCollection;
class Category
{
// ...
/**
* @ORM\OneToMany(targetEntity="Product", mappedBy="category")
*/
protected $products;
public function __construct()
{
$this->products = new ArrayCollection();
}
}
Then add a property in the other class to reference the category/group/type class:
// src/AppBundle/Entity/Product.php
// ...
class Product
{
// ...
/**
* @ORM\ManyToOne(targetEntity="Category", inversedBy="products")
* @ORM\JoinColumn(name="category_id", referencedColumnName="id")
*/
protected $category;
}
Have Doctrine generate getter and setter methods:
$ php app/console doctrine:generate:entities Acme
Examples
- Tutorials database:
TutorialandTutorialGroupclasses.
Selectively retrieving object properties
By default Doctrine retrieves all the properties for an object.[2]
$qb = $em->createQueryBuilder();
// You can select multiple properties in the partial statement
$qb
->select('partial Article.{id,title,summary}')
->from('Entity\Article')
;
Notes
- ↑ Relationships/Accosciations, Doctrine documentation, Symfony documentation, "The Book"
- ↑ Some Doctrine 2 Best Practices, UVD
#4 By default Doctrine will fetch all of the properties for a given entity