1

Тема: Doctrine && ManyToMany && fetch=eager

Здравствуйте специалисты,
прошу помочь решить проблему.
У меня есть сущность корзина которая связана (многикомногим) с продуктами
сбор продуктов отмечен как жадный, но почему то при работе с корзиной коллекция продуктов остается не проинициализированной.

* @ORM\ManyToMany(targetEntity="Deface\Bundle\AdminBundle\Entity\Product", fetch="EAGER")
     * @ORM\JoinTable(name="product_basket",
     * joinColumns={@ORM\JoinColumn(name="basket_id", referencedColumnName="id")},
     * inverseJoinColumns={@ORM\JoinColumn(name="product_code", referencedColumnName="code")}
     * )
     */
    private $products;

з.ы второй вопрос
у меня создалась промежуточная таблица basket_id product_code
и две колонки стали ключем, это исключает попадание одного и того же товара в корзину два раза, поэтому я просто убрал ключ в таблице, но до сих пор не могу понять как нужно было сделать в сущности

2

Re: Doctrine && ManyToMany && fetch=eager

deface пишет:

почему то при работе с корзиной коллекция продуктов остается не проинициализированной

Из приведенного куска кода ошибка никак не детектится. Инициализируете ли вы коллекцию в конструкторе?

deface пишет:

поэтому я просто убрал ключ

Первое. Это не будет работать. Доктрина не сможет различить две связи с одинаковыми составными ключами, она будет работать всегда с одной из них, первой, которую вернет база данных. Так не делается (и не только в Доктрине, но и вообще в РСУБД). Если хотите дубли, то создавайте связующую сущность вручную и делайте ей собственный идентификатор с ключом.
Второе. Исходя из моего понимания задачи «корзина с продуктами», вместо добавления двух связей на один и тот же продукт, гораздо логичнее добавить связи признак количества, и оперировать им, а не количеством записей в связующей таблице.

3

Re: Doctrine && ManyToMany && fetch=eager

Да инициализирую.
А как можно в промежуточную таблицу добавить поле с количеством и работать с ним средствами доктрины? могли бы пример маленький накидать