Symfony Связи, ограничения и Doctrine

pr1

Новичок
Всем привет. Просьба объяснить один момент. Допустим есть таблицы со связью manyTomany:
products: id, title
categories: id, title
category_product: category_id, product_id, some_columns...

Есть 2 сущности Product и Category, где и указываю эти связи (в документации нашел только такой способ указания связей):
PHP:
class Product
{
    .......................
    /**
     * @var \Doctrine\Common\Collections\Collection
     *
     * @ORM\ManyToMany(targetEntity="Category", inversedBy="product")
     * @ORM\JoinTable(name="category_product",
     *   joinColumns={
     *     @ORM\JoinColumn(name="product_id", referencedColumnName="id")
     *   },
     *   inverseJoinColumns={
     *     @ORM\JoinColumn(name="category_id", referencedColumnName="id")
     *   }
     * )
     */
    private $category;
   .............................
}
/////////////////////////////////////////////
class Category
{
    ......................
   /**
   * @var \Doctrine\Common\Collections\Collection
   *
   * @ORM\ManyToMany(targetEntity="Product", mappedBy="category")
   */
   private $product;
   .........................
}
Вызываю команду миграции, таблицы и связи создаются. Вопрос:
1. Не могу понять, как правильно указать для таблицы category_product остальные колонки, помимо product_id и category_id?
2. Как указать ограничения к внешним ключам помимо onDelete (например команды onUpdate там нет)?

Никогда до этого не имел дела с ORM, поэтому немного трудно воспринимать таблицы как объекты.
 
Последнее редактирование:

AmdY

Пью пиво
Команда форума
Остальное не надо, доктрина сама их создай и ты их никогда руками не трогай, только через методы для работы со связями.
 

pr1

Новичок
Остальное не надо, доктрина сама их создай и ты их никогда руками не трогай, только через методы для работы со связями.
Я немного про другое. Тот код, что я написал, работает.
Когда запускаю migrate, создаются таблицы products, categories и category_product. В category_product
создаются колонки category_id и product_id. Я хочу узнать, как в Doctrine указать для category_product другие колонки?
 

A1x

Новичок
Связь many-to-many в доктрине предполагает что в промежуточной таблице только два поля, если есть дополнительные поля то надо создавать промежуточную сущность и соответственно вместо many-to-many делать две связи one-to-many
 
  • Like
Реакции: pr1
Сверху