Size: a a a

2021 October 13

✨Basic_Instinct✨ in symfony
без проблем, можешь флаг повесить на Page, типа status='delete' и удалять мягко
у меня таким образом табличка Page не разрастается, и все записи я получаю как положено и где положено
источник

✨Basic_Instinct✨ in symfony
такой же подход применяем к Book и все дела ))
источник

ПГ

Павел Г. in symfony
Какой такой? Привязка к book хранилась в page
источник

✨Basic_Instinct✨ in symfony
Book ссылается на Page без связи
источник

ПГ

Павел Г. in symfony
В page был bookId без связи. и Мы его потеряли
источник

SP

Sergey Protko in symfony
связи заменяются на айдишки, прям как в базе
источник

✨Basic_Instinct✨ in symfony
зачем тебе связь страницы на книгу?
источник

✨Basic_Instinct✨ in symfony
Книга должна знать о своих страницах
источник

✨Basic_Instinct✨ in symfony
хотя не, туплю... вечерело ))
источник

ПГ

Павел Г. in symfony
Как должна реализовываться такая связь?
источник

ПГ

Павел Г. in symfony
Пора расходиться))) всем спасибо, + к знаниям )
источник

✨Basic_Instinct✨ in symfony
источник

KS

Kirill Sotnikov in symfony
Добрый вечер. Вопрос к знатокам доктрины. Гугление результатов не дало.
Имеем таблицы:
table с полем id (PK),
table1 с полем id (PK, FK на table.id),
table2 с полем entity1_id (часть PK, FK на table1.id).
Нас интересует в сущности entity1 (из table1) OneToOne на entity (table), в entity2 (из table2) ManyToOne на entity1 (для сохранения ссылок на FK соответствующих таблиц, дабы не было возможности создать entity2 с entity1_id, которые есть в entity, но нет в entity1).
Если делать подобным образом:
https://gist.github.com/Kisoty/6329a8ff0492db3c659ba0634ee65160
https://gist.github.com/Kisoty/30dd3cbe790da3b38e8ea9903fca05c2
https://gist.github.com/Kisoty/8cdb9b9027bfe486ae54fe4613cfd4a1
получаю в doctrine:schema:validate следующее:
Cannot map association 'Entity\Entity2#entity1 as identifier, because the target entity 'Entity\Entity1' also maps an association as identifier.
Ну и разумеется, работать оно не будет (я пробовал :D)
Каким образом это дело можно замапить?
P.S. Схема пришла, скажем так, по наследству, менять ее нельзя (идиотизм, но имеем, что имеем).
источник

✨Basic_Instinct✨ in symfony
приведи в порядок свой вопрос - у тебя классы сущностей не соотвтетвуют написанному, таблицы имеют одинаковые названия "table1"
из увиденного смею предположить, что ты пытаешься мапить на поле id, а в сущностях поле с идентификатором под названием $entity или вообще составной ключ
источник

KS

Kirill Sotnikov in symfony
В entity2 таблица действительно была не та, там table2, исправил. В остальном вроде верно
источник

KS

Kirill Sotnikov in symfony
В entity1 FК на entity, он же PK. В entity2 ФК на entity1, он часть составного PK
источник

✨Basic_Instinct✨ in symfony
не стало понятней, но все же
1 - свойство как первичный ключ нельзя мапить на другую сущность
#[ORM\Id]
#[ORM\ManyToOne(targetEntity: "Entity1")]

2 - если ты мапишь на первичный ключ id - то и в сущности должен присутствовать этот первичный ключ с этим именеенм $id
#[ORM\JoinColumn(name: "entity1_id", referencedColumnName: "id")]
источник

KS

Kirill Sotnikov in symfony
1. А как тогда мапить PK, являющийся одновременно FK к другой таблице?
2. В table2 поле entity1_id является FK к table1 и частью составного PK.
источник

KS

Kirill Sotnikov in symfony
То есть в entity2 в JoinColumn(name) оно не id, a entity1_id. Вроде верно
источник

✨Basic_Instinct✨ in symfony
1 вообще это больше похоже на связь ManyToMany

#[ORM\Id]
   #[ORM\ManyToOne(targetEntity: "Entity1")]
   #[ORM\JoinColumn(name: "entity1_id", referencedColumnName: "id")]
   private Entity1 $entity1;

   #[ORM\Id]
   #[ORM\ManyToOne(targetEntity: "SmthElse")]
   #[ORM\JoinColumn(name: "smth_else_id", referencedColumnName: "id")]
   private SmthElse $smthElse;

но она не требует создания отдельной сущности, можно конечно прибегнуть к ручному созданию, но там все немного по другому делается
источник