Контакты

Наибольший вклад в теги

Все теги (2)

Лучшие ответы пользователя

Все ответы (1)
  • Как в doctrine сделать сущность только для четния?

    @agr_ugraweb Автор вопроса
    Спасибо за информацию, все осознал :)

    Что в результате получилось:

    entityA:
      type: entity
      table: tableName_A
      id:
        id:
          type: integer
          column: id
          generator:
            strategy: AUTO
      manyToOne:
        role:
          targetEntity: entityB
          joinColumn:
            name: cityId
            referencedColumnName: id
          cascade: ["persist"]


    Сущность entityB осталась без изменений.
    При создании entityA, мне необходимо в поле $entityA->role положить entityB.

    Раньше было - я создавал сущность руками:
    $entityA->role = new entityB(//params);

    Сейчас стало - получаю ссылку на сущность из доктрины:
    $entityA->role = $em->getReference(entityB::class, $entityBId);


    Таким образом при сохранении entityA доктрина проверяет, была ли изменена связная entityB и если она не была изменена (а она не была изменена или подменена, т.к. используется ссылка), то создания/обновления записи в таблице tableName_B не происходит.
    В доках доктрины это так же сказано:
    This concept is called Persistence by Reachability: New entities that are found on already managed entities are automatically persisted as long as the association is defined as cascade: persist.


    Спасибо Лексей Фельде за подсказку :)
    Ответ написан
    1 комментарий

Лучшие вопросы пользователя

Все вопросы (2)