Я использую CodeIgniter и имею три таблицы и модель для каждой:
- Пользователь - таблица пользователей
- Продукт - таблица продуктов
- UserProduct — таблица, показывающая, какие продукты есть у пользователей (два столбца внешнего ключа и некоторые другие столбцы, такие как дата)
В моем коде я хочу отобразить список для конкретного пользователя, показывающий, какие продукты у него есть. Итак, у меня есть метод в классе UserProduct, который выполняет выборку в таблице UserProduct, совпадающую с идентификатором пользователя, и соединение, в которое вносятся все данные, которые мне нужны о каждом продукте.
Это прекрасно работает, но теперь меня беспокоит то, что я иду по пути жесткой связи. Например, скажем, я хочу узнать URL-адрес изображения продукта. У меня есть метод в модели продукта, чтобы вернуть это, я не хочу дублировать метод в модели UserProduct, и я не хочу создавать связь, когда модель UserProduct пытается получить доступ к методам в других моделях (которые я не думайте, что CodeIgniter нравится вам).
Эта проблема, вероятно, возникает в любой модели, которая обращается к таблице БД с внешними ключами, где этой модели могут потребоваться данные из родительской таблицы и она хочет манипулировать ими.
Есть ли элегантное решение, или мне нужно признать, что внешние ключи обязательно создают связи в моделях или потребность в аналогичных методах в моделях?
ТИА, Фил.