У меня есть база данных, в которой есть сценарий, в котором между двумя таблицами существует отношение многие ко многим (с третьей «ассоциативной» таблицей между ними):
Например:
Table 1 : user (primary key id)
Table 2 : contact_info (primary key id)
Associative table: user_has_contact_info (primary key id, foreign keys: user_id and contact_info_id)
Теперь требования к приложению должны иметь возможность добавлять несколько записей contact_info на одной странице при создании записи пользователя:
Например: (Форма)
UserName: ___________
Contact Type Contact Detail
Phone 123-4567
Email me@here.com
_________V _______________ [Add Contact Button]
... plus more fields for the user table ...
Таким образом, в моем примере выше, у меня есть поле имени пользователя (которое будет указано в таблице пользователя), таблица всех записей контактной информации, которые относятся к пользователю (в поле имени пользователя), которые будут включены в таблицу contact_info. и затем элементы формы для contact_type и contact_details (под соответствующими столбцами под таблицей) (с кнопкой добавления?), которые добавят контактную информацию в контактную «таблицу». Тогда ниже всего этого, больше полей, которые принадлежат пользовательской таблице.
Если вы следите за мной до сих пор, проблема, с которой я сталкиваюсь, заключается в том, что клиент хочет, чтобы это отображалось на одной форме, а не на нескольких страницах или в двух формах, поток должен «выглядеть» как одна форма (даже если элементы будут принадлежать разным таблицам базы данных.
Во-вторых, достаточно просто поместить данные в таблицу contact_info, однако фактический user_id не генерируется до тех пор, пока не будут заполнены остальные поля 'user' и не обновлена запись пользователя, и поэтому я не в состоянии увидеть, как добавить ассоциативную запись в user_has_contact_info, не сохранив сначала запись пользователя и не добавив контактную информацию второй.
Наконец, предпочтение состоит в том, чтобы избегать javascript (хотя это не исключено полностью, потому что практически любое решение будет требовать либо обновления javascript, либо страницы с частичным сохранением данных поля формы и, возможно, даже проблем с проверкой и фильтрацией, еще не зашел так далеко)
Итак, мой последний вопрос: каков наилучший способ обработки отношений таблицы базы данных «многие ко многим» с использованием Zend_Form в приведенном выше сценарии. Я мог бы переосмыслить эту проблему и упустить простое решение здесь, и с нетерпением жду разных перспектив.
Обратите внимание, что это не вопрос о том, как проектировать базу данных, а о том, как создать Zend-форму для обработки базы данных так, как она спроектирована.