@aassdds
Люблю борщ и PHP

Как в Doctrine сделать 2 foreign key на одну и ту же таблицу?

Добрый день
Сразу скажу что неуверен что правильно сформировал заголовок, но постараюсь раскрыть проблему здесь
Дано:
Symfony + fosUser + doctrine + остальное тут не важно
Сайт типа багтрекер с тикетами
У тикетов такая таблица
id
title
text
author_id
target_user_id

То есть author_id - тот кто создал
target_user_id - кому поручено задание

author_id - foreign key с таблицей user по полю id - тут все понятно
Дальше вопрос
target_user_id - тоже foreign key с таблицей user по id
После принятия изменений - в таблице user доктрина сама сделала поле roles текстового типа, и впринципе все сломалось
ни логин пользоватлелей не работает, ни какое либо другое действие где хоть как то затрагивается таблица user
Я понимаю что причина именно во втором f.key - и вопрос не столько по коду, сколько по архитектуре и sql
1) Я понимаю что два f.key которые в таблице по большому счту одинаковы, просто отличаются названием поля - можно ли так(скорее всего нет) и как сделать правильно?
2) Если в таблице добавятся еще поля которые как то связаны с таблицей user, но с разными юзерами (например: Автор / валидатор / иполнитель / тстировщик) - как поступить в такой ситуации ?
  • Вопрос задан
  • 282 просмотра
Пригласить эксперта
Ответы на вопрос 1
Austin_Powers
@Austin_Powers
Web developer (Symfony, Go, Vue.js)
1) Замапить 1...N свойст сущности на одну и ту же сущность вышеуказанным путем можно. И это нормально.

2)
После принятия изменений - в таблице user доктрина сама сделала поле roles текстового типа

Сама доктрина делать ничего не будет. Смотрите маппинг поля roles. Или Вы, или какой то бандл вероятно его переопределили, указав в таблице текстовое значение поля.

3)Что бы доктрина не делала "сама" используйте миграции и смотрите какие изменения будут внесены в Вашу БД.
Ответ написан
Комментировать
Ваш ответ на вопрос

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

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