iKatkovJS
@iKatkovJS
Symfony Developer

Doctrine OneToMany, все ли верно?

Всем привет!
Есть сущности (упрощенные):
<?php

namespace AppBundle\Entity;

use Doctrine\Common\Collections\ArrayCollection;
use Doctrine\ORM\Mapping as ORM;

/**
 * Brand
 *
 * @ORM\Table(name="brand")
 * @ORM\Entity(repositoryClass="AppBundle\Repository\BrandRepository")
 */
class Brand
{
  /**
     * @var integer
     *
     * @ORM\Column(name="id", type="integer")
     * @ORM\Id
     * @ORM\GeneratedValue(strategy="IDENTITY")
     */
    private $id;

    /**
     * 1 brand:many products
     * @ORM\OneToMany(targetEntity="AppBundle\Entity\Product",
     *                mappedBy="brand")
     */
    private $products;


    public function __construct() {
        parent::__construct();
        $this->products = new ArrayCollection();
    }

    /**
     * Get products
     *
     * @return \Doctrine\Common\Collections\Collection 
     */
    public function getProducts()
    {
        return $this->products;
    }
}
?>



<?php

namespace AppBundle\Entity;

use Doctrine\ORM\Mapping as ORM;

/**
 * Product
 *
 * @ORM\Table(name="product")
 * @ORM\Entity(repositoryClass=AppBundle\Repository\ProductRepository")
 */
class Product
{
      /**
     * @var integer
     *
     * @ORM\Column(name="id", type="integer")
     * @ORM\Id
     * @ORM\GeneratedValue(strategy="AUTO")
     */
    private $id;

    /**
     * many prodcuts : 1 brand
     * @var integer
     * @ORM\ManyToOne(targetEntity="AppBundle\Entity\Brand", inversedBy="products")
     */
    private $brand;
}
?>


Все ли верно? Почему не могу получить products?
  • Вопрос задан
  • 1674 просмотра
Решения вопроса 2
@bears
Свойству $brand надо добавить @ORM\JoinColumn(name="brand_id", referencedColumnName="id")
Ответ написан
iKatkovJS
@iKatkovJS Автор вопроса
Symfony Developer
В общем сегодня утром включил проект и все магическим образом заработало. Странно, ведь кэш я чистил. Значит я думаю нужно действовать по советам Дениса. Напишу список действий для тех, у кого будет такая же проблема:
  1. Добавить необходимые аннотации к свойствам
  2. Проверить правильность командой php app/console doctrine:schema:validation
  3. Удалить все свойства у рабочих проектов и выполнить команду php app/console doctrine:generate:entities "ВашБандл"
  4. Выполнить php app/console doctirne:schema:update --force (при необходимости сделать сначала --dump-sql, что бы просмотреть изменения)
  5. Profit!


Документация Doctrine по связям: doctrine-orm.readthedocs.org/en/latest/reference/a...
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы