Список форумов Cake-PHP.ru Cake-PHP.ru
Форум программистов CakePHP
(на сайт)
 
 Watched TopicsWatched Topics   FAQFAQ   ПоискПоиск   ПользователиПользователи   ГруппыГруппы   РегистрацияРегистрация 
 ПрофильПрофиль   Войти и проверить личные сообщенияВойти и проверить личные сообщения   ВходВход 

Сохранение данных в таблицы HABTM

 
Начать новую тему   Ответить на тему    Список форумов Cake-PHP.ru -> Общий
Предыдущая тема :: Следующая тема  
Автор Сообщение
JN0iZzze

цитировать



Зарегистрирован: 11 Сен 2009 13:39:33
Сообщения: 2

СообщениеДобавлено: 11 Сен 2009 13:50:49    Заголовок сообщения: Сохранение данных в таблицы HABTM Ответить с цитатой

Добрый день, мне нужен совет и помощь. У меня есть задача есть модели:
Question - Вопросы
Questionnaire - Анкета
(чтоб не путаться буду называть их по русски) Необходимо чтобы при добавление Анкеты можно было выбрать Вопросы которые туда войдут (с помощью checkbox'ов). Одни и теже вопросы могут находиться в разных Анкетах. Для этого создал дополнительную таблицу questionnaires_questions и связал её через HABTM с Вопросами и Ответами. Далее сталкнулся с трудностями и непониманием.
1) Как вообще записать в дополнительную таблицу данные из checkbox?
2) Какими должны быть имена checkbox'ов чтобы на сервере можно было обрабатывать переданные данные?
3) Нужнали для дополнительной таблицы модель? Или только HABTM связи в моделях Вопросы и Анкеты
4) При попытке на сервере выполнить $this->Questionnaire->save($this->data) результатов никаких, как мне именовать данные из checkbox чтобы они успешно сохранились?
5) Возможно ли сохранить сразу несколько записей о связи одной командой save или только foreach?
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
mayar

цитировать



Зарегистрирован: 03 Апр 2009 15:52:14
Сообщения: 24

СообщениеДобавлено: 11 Сен 2009 15:42:07    Заголовок сообщения: Ответить с цитатой

Проверьте, правильно ли вы именуете файлы, таблицы и т.п.

Вот ваша ассоцация:
Анкеты HABTM Вопросы
Связующия таблица должна называться Анкеты_Вопросы, т.к. "А<В"

Воспользуйтесь консольной утилиткой
Код:
cake bake
для создания моделей, контроллеров и вьюшек для обеих таблиц. Модель, контроллер и вью для связующей таблицы вроде не нужна.

С чекбоксами дела опстоят довольно сложно в Cake (насколько я успел убедиться). Формируются они вот так:

Код:
<?php echo $form->input('trouble', array( 'type' => 'checkbox', 'label' => 'Отправить претензию')); ?>


Какие поля у вас есть в таблицах Анкеты и Вопросы?

Насколько я поня, вы хотите заносить данные сразу в обе таблицы: добавить анкету и сразу же набор вопросов к ней, верно?
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
JN0iZzze

цитировать



Зарегистрирован: 11 Сен 2009 13:39:33
Сообщения: 2

СообщениеДобавлено: 11 Сен 2009 17:38:16    Заголовок сообщения: Ответить с цитатой

Цитата:
Насколько я поня, вы хотите заносить данные сразу в обе таблицы: добавить анкету и сразу же набор вопросов к ней, верно?

Да верно но я так понимаю что без обработки на сервере это не получиться, так как чекбоксы вставляю как
Код:
$form->checkbox('Questionnaire.'.$one['Question']['id'].'.question_id')


И на сервер передаёться масив данных Questionnaire содержащий поля name и далее по числовым индесам [Questionnaire][0][question_id] = 1, [Questionnaire][1][question_id] = 0

Такой вариант не прокатывает помоему по двум причинам так как я неправельно именую группу чекбоксов и во вторых в чекбоксах передаёться состояние флажка. на сервере необходимо удалить все нулевые флажки а установленные заменить в массиве на ключ массива (так как он являеться id вопроса). Насчтё этого проблем нет, проблема в том как эти данные потом сохранить? $this->Questionnaire->saveAll($this->data) Не даёт результатов как ни пробовал пробовал, проблема как мне видиться либо в самом обращение к объекту $this->Questionnaire либо в именнование ключа в массиве $this->data
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
mayar

цитировать



Зарегистрирован: 03 Апр 2009 15:52:14
Сообщения: 24

СообщениеДобавлено: 15 Сен 2009 10:17:26    Заголовок сообщения: Ответить с цитатой

Когда я формировал группу чекбоксов - я решил обойтись без хелпера $form.

Группа формируется в цикле из вот таких частей:
Код:
<input type="checkbox" name="data[EquipSet][<?php echo $i;?>][equip_id]" value="<?php echo $value; ?>"  />


Самое главное для saveAll - сформировать правильный массив.

Почитай вот тут: http://teknoid.wordpress.com/2008/05/05/multiple-checkboxes/

тут: http://blog.matsimitsu.nl/code/164/saveall-with-cakephp

и тут поищи: http://www.google.ru/#hl=ru&source=hp&q=cakephp+saveAll+checkboxes&btnG=%D0%9F%D0%BE%D0%B8%D1%81%D0%BA+%D0%B2+Google&lr=&aq=f&oq=cakephp+saveAll+checkboxes&fp=ecfa0881d83bc48d
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
Имя
Сообщение

Смайлики
Very Happy Smile Sad Surprised
Shocked Confused Cool Laughing
Mad Razz Embarassed Crying or Very sad
Evil or Very Mad Twisted Evil Rolling Eyes Wink
Exclamation Question Idea Arrow
Дополнительные смайлики

 
Показать сообщения:   
Начать новую тему   Ответить на тему    Список форумов Cake-PHP.ru -> Общий Часовой пояс: GMT + 3
Страница 1 из 1

 
Перейти:  
Вы можете начинать темы
Вы можете отвечать на сообщения
Вы можете редактировать свои сообщения
Вы можете удалять свои сообщения
Вы не можете голосовать в опросах


Powered by phpBB © 2001, 2005 phpBB Group
Русская поддержка phpBB

Рейтинг@Mail.ru