4.6 Отношения метаданных (Relations)

  • One (category) to many (products)
use Doctrine\Common\Collections\ArrayCollection;

class Category {

    /**

    * @ORM\OneToMany(targetEntity="Product", mappedBy="category")

    */

    protected $products;

    public function __construct() {

     $this->products = new ArrayCollection();

    }
}
  • Many (products) to one (category)
class Product

{

     /**

     * @ORM\ManyToOne(targetEntity="Category", inversedBy="products")

     * @ORM\JoinColumn(name="category_id", referencedColumnName="id")

     */

     protected $category;

}
  • Many (Products) to many (categories)
class Product {

 /**

 * @ORM\ManyToMany(targetEntity="Category", inversedBy="products")

 * @ORM\JoinTable(name="product_categories")

 */

     private $categories;

}

class Category {

 /**

 * @ORM\ManyToMany(targetEntity="Producr", mappedBy="categories")

 */

     private $products;

}

После указания зависимостей необходимо, чтобы доктрина сгенерировала новый аксессоры:

php app/console doctrine:generate:entities Acme

А также, чтобы добавила необходимые поля и ключи в таблицу БД:

php app/console doctrine:schema:update --force