Я пишу приложение CakePHP для регистрации работы, которую я выполняю для разных клиентов, но после нескольких дней работы я, похоже, не могу заставить ее делать то, что я хочу. Я прочитал большую часть книги CakePHP.CakePHP access косвенно связанная модель - вопрос новичка
и googled за все, что я ценю, поэтому я полагаю, что мне не хватает чего-то очевидного!
Каждый элемент журнала относится к подпроекту, который, в свою очередь, относится к «проекту», который, в свою очередь, относится к «суб-клиенту», который, наконец, принадлежит клиенту. Это 5 таблицы MySQL Я использую:
mysql> DESCRIBE log_items;
+-----------------+--------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+-----------------+--------------+------+-----+---------+----------------+
| id | int(11) | NO | PRI | NULL | auto_increment |
| date | date | NO | | NULL | |
| time | time | NO | | NULL | |
| time_spent | int(11) | NO | | NULL | |
| sub_projects_id | int(11) | NO | MUL | NULL | |
| title | varchar(100) | NO | | NULL | |
| description | text | YES | | NULL | |
| created | datetime | YES | | NULL | |
| modified | datetime | YES | | NULL | |
+-----------------+--------------+------+-----+---------+----------------+
mysql> DESCRIBE sub_projects;
+-------------+--------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+-------------+--------------+------+-----+---------+----------------+
| id | int(11) | NO | PRI | NULL | auto_increment |
| name | varchar(100) | NO | | NULL | |
| projects_id | int(11) | NO | MUL | NULL | |
| created | datetime | YES | | NULL | |
| modified | datetime | YES | | NULL | |
+-------------+--------------+------+-----+---------+----------------+
mysql> DESCRIBE projects;
+----------------+--------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+----------------+--------------+------+-----+---------+----------------+
| id | int(11) | NO | PRI | NULL | auto_increment |
| name | varchar(100) | NO | | NULL | |
| sub_clients_id | int(11) | NO | MUL | NULL | |
| created | datetime | YES | | NULL | |
| modified | datetime | YES | | NULL | |
+----------------+--------------+------+-----+---------+----------------+
mysql> DESCRIBE sub_clients;
+------------+--------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+------------+--------------+------+-----+---------+----------------+
| id | int(11) | NO | PRI | NULL | auto_increment |
| name | varchar(100) | NO | | NULL | |
| clients_id | int(11) | NO | MUL | NULL | |
| created | datetime | YES | | NULL | |
| modified | datetime | YES | | NULL | |
+------------+--------------+------+-----+---------+----------------+
mysql> DESCRIBE clients;
+----------+--------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+----------+--------------+------+-----+---------+----------------+
| id | int(11) | NO | PRI | NULL | auto_increment |
| name | varchar(100) | NO | | NULL | |
| created | datetime | YES | | NULL | |
| modified | datetime | YES | | NULL | |
+----------+--------------+------+-----+---------+----------------+
Я создал следующие ассоциации в CakePHP:
LogItem belongsTo SubProjects
SubProject belongsTo Projects
Project belongsTo SubClients
SubClient belongsTo Clients
Client hasMany SubClients
SubClient hasMany Projects
Project hasMany SubProjects
SubProject hasMany LogItems
Использование «торт испечь» Я создал модели, контроллеры (индекс, вид добавлять, редактировать и удалять) и представления, и все, кажется, функционирует, так как я могу успешно выполнять простые операции CRUD.
Вопрос
При редактировании «войти пункт» в www.mydomain/log_items/редактирования я представил с точки зрения вы все подозреваемого; а именно столбцы таблицы log_items с соответствующими полями текстовых полей/выбора и т. д. Я также хотел бы включить в поле редактирования «log_items» выбранные блоки для выбора клиента, субклиента, проекта и подпроекта.
В идеале "суб-клиента выберите флажок должен заполнить себя в зависимости от«клиента»был выбран,«проекта»выберите поле также должен заполнить сам в зависимости от«суб-клиент»и т.д., выбранной и т.д.
Я предполагаю, что путь заполнения полей выбора соответствующими параметрами - это Ajax, но я не уверен, как можно фактически получить доступ к модели из дочернего представления косвенно связанной модели, например, как создать " клиент "в окне редактирования" log_items ".
Я нашел этот пример:
, где кто-то достигает что-то подобное для американских штатов, округов и городов. Тем не менее, я заметил в схеме базы данных, которая загружаема с сайта выше ссылки, - что в таблицах базы данных нет внешних ключей, поэтому теперь мне интересно, правильно ли я буду поступать по вещам.
Любые указатели и советы будут очень признательны.
С наилучшими пожеланиями,
Chris