Я сталкивался с чем-то, что раньше казалось простым, но я снова почесал голову. У меня есть таблица для пользователей:
user_id (PK) | username| email | something
... и таблица «представлений», когда один пользователь просматривал другого пользователя:
view_id (PK) | viewer_id | viewed_id | view_date
"viewer_id" и "Просмотренный_ид" оба являются user_ids, что позволяет мне искать отдельно случаи, когда пользователь был зрителем или просматриваемым.
Сначала я думал, что оба эти столбца будут внешними ключами, но, создав таблицы в моем файле schema.yml (я использую Doctrine 1.2) и указав два отдельных внешних отношения (по одному для каждого столбца), кажется, В доктрине учитываются только первые перечисленные внешние связи между этими двумя таблицами (user_id> viewer_id).
Меня сейчас смущает, правильное ли это поведение MySQL, проблема в Doctrine или проблема в моем подходе, или не о чем беспокоиться! Могут ли быть два отдельных внешних ключа из одной таблицы, сопоставленные одному и тому же столбцу в другой таблице? Это даже логично, учитывая, что JOIN все еще дает мне доступ к «представлениям» через user_id? Я правильно понял?
Спасибо за ваше время.
РЕДАКТИРОВАТЬ - Файл схемы:
User:
relations:
View: {class: View, local: user_id, foreign: viewer_id, type: many, foreignType: one, alias: View, foreignAlias: User}
View: {class: View, local: user_id, foreign: viewed_id, type: many, foreignType: one, alias: View, foreignAlias: User}
... only difference is viewer_id/viewed_id