Symfony Database Cookbook: Difference between revisions

From Littledamien Wiki
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

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

  1. Relationships/Accosciations, Doctrine documentation, Symfony documentation, "The Book"
  2. Some Doctrine 2 Best Practices, UVD
    #4 By default Doctrine will fetch all of the properties for a given entity