Одна таблица для загрузки для нескольких ресурсов в CakePHP - PullRequest
1 голос
/ 07 апреля 2010

У меня есть приложение CakePHP, в котором я хотел бы прикрепить галерею к нескольким ресурсам. Допустим, у меня есть художники, у каждого есть своя галерея. У меня есть статьи, к каждой статье прикреплено несколько изображений и так далее. Теперь я настроил таблицы следующим образом:

  1. Artists hasMany Artistimages, поля в таблице artistimages: id, artist_id, filename, filetype, filesize и т. Д.
  2. Статьи имеет много статей, поля в таблице articleimages: id, article_id, filename, filetype, filesize и т. Д.

... но я думаю, что это не так, как должно быть.

Есть ли возможность иметь одну таблицу с именем, например, uploads, которая будет содержать все изображения с внешним ключом, указывающим на ресурс, к которому он относится Как сказать CakePHP, какое изображение исходит с какого ресурса?

Ответы [ 3 ]

0 голосов
/ 07 апреля 2010

Я бы порекомендовал использовать Полиморфное поведение .Я часто делаю это для Binary модели, которая охватывает изображения, документы и т. Д. Они представляют собой физические файлы, которые могут быть связаны с любым количеством моделей (фотографии, заявители и т. Д.).

Сутьполиморфное отношение состоит в том, что таблица имеет 2 дополнительных поля.Одно поле, которое указывает имя ассоциированной модели (например, Photo, Applicant и т. Д.), А другое - для значения внешнего ключа (т. Е. Поле id в таблице photos).например).

0 голосов
/ 08 апреля 2010

Для всех, кто ищет рабочее решение, использующее полиморфное поведение и MeioUpload, проверьте this . Я использую это прямо сейчас, и, кажется, работает нормально.

0 голосов
/ 07 апреля 2010

Если бы это был я, у меня была бы таблица images, тогда у меня был бы Артист и Артикул hasAndBelongsToMany к изображению.

Ваш HABTM будет тогда иметь две таблицы соединений artists_images и articles_images, тогда, если повезет, Cake запишет в эти таблицы соединений отношения между каждой из них. Таким образом, вы должны получить правильные вещи, связанные с правильными изображениями.

Используя HABTM, вы даже можете иметь одно изображение, связанное со Статьей и Исполнителем, и одно и то же изображение, связанное более одного раза, если вам нужно.

Надеюсь, это имеет смысл, в книге есть больше информации о HABTM, http://book.cakephp.org/view/83/hasAndBelongsToMany-HABTM

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...