Symfony Database Cookbook

From Littledamien Wiki
Jump to navigation Jump to search


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

Notes

  1. Relationships/Accosciations, Doctrine documentation, Symfony documentation, "The Book"