Как мне создать отношение ManyToOne при джойне к 2 колонкам?

Добрый день всем!

У меня есть 2 таблицы, одна с ценами другая с остатками на складе мне надо прописать между ними отношения. При этом джойн будет по 2 полям (id склада и товара). Подробнее на скрине
Как мне это сделать правильно?
Вариант описанный ниже не работает
class Price {
    /**
     * @ORM\ManyToOne(targetEntity="\CRMStoreBundle\Entity\Inventory", inversedBy="prices", cascade={"persist"})
     * @ORM\JoinColumns({
     *      @ORM\JoinColumn(name="store_id", referencedColumnName="store_id"),
     *      @ORM\JoinColumn(name="offer_id", referencedColumnName="offer_id")
     * })
     */
    private $inventory;
}

class Inventory {
    /**
     * @var \CoreBundle\Entity\PurchasePrice
     *
     * @ORM\OneToMany(targetEntity="\CoreBundle\Entity\PurchasePrice", mappedBy="inventory", fetch="EAGER")
     * @Serializer\Exclude
     */
    protected $prices;
}

5fe3842283a53227112493.png
  • Вопрос задан
  • 50 просмотров
Решения вопроса 1
@tukreb
Нельзя в Доктрине джойнить сразу по 2 полям одну сущность, если это не ManyToMany (которая в свою очередь не может содержать ничего кроме 2 ID полей, иначе придётся вручную разбивать связь на ManyToOne и выделять отдельные ID).
У вас уже имеется специальный ID по ним и описывайте связь ManyToOne
Например
class Inventory {
    /**
     * @ORM\ManyToOne(targetEntity=Price::class, inversedBy="prices")
     * @ORM\JoinColumns({
     *   @ORM\JoinColumn(name="id_price", referencedColumnName="id")
     * })
     */
    protected $prices;
}
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы