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

Связи в моделях.

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

цитировать



Зарегистрирован: 24 Апр 2009 17:01:45
Сообщения: 6

СообщениеДобавлено: 24 Апр 2009 17:15:12    Заголовок сообщения: Связи в моделях. Ответить с цитатой

Суть вопроса проста. Имеем две модели question и answer.
Question состоит из двух таблиц id и content.
Answer состоит из трех таблиц id, question_id, text.
Отсюда я думаю понятно, что каждый Question может быть связан с несколькими Answer.
Прописываем в моделях связи:
в question - var $hasMany = 'Answer';
в answer - var $belongsTo = 'Question';

Теперь я хочу чтобы через контроллер Questions в базу можно было добавить одновременно и сам вопрос(question) и ответ(answer) с привязкой question_id.

В контроллере Questions я добавил такой метод:
Код:
function add() {
      if (!empty($this->data)) {
         if ($this->Question->Answer->save($this->data)) {
            $this->Session->setFlash('Данные успешно сохранены.');
            $this->redirect(array('action' => 'index'));
         }
      }
   }

Ну и создал отображение:
Код:
echo $form->create('Question');
echo $form->input('content', Array('label' => 'Вопрос', 'type' => 'text'));
echo $form->input('Answer.text', Array('label' => 'Ответ', 'type' => 'text'));
echo $form->end('Сохранить');


Вот теперь хочу, чтобы одновременно добавлялся и вопрос и ответ с question_id. Но при моей реализации question_id всегда равен 0. Как исправить?
Я надеюсь достаточно понятно объяснил. Спасибо всем кто попытается вникнуть.
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
Vlad

цитировать



Зарегистрирован: 02 Ноя 2007 11:45:52
Сообщения: 241

СообщениеДобавлено: 24 Апр 2009 17:28:35    Заголовок сообщения: Ответить с цитатой

Сохраняешь вопрос в базу
Получаешь его id
Выставляешь В question_id для ответа
Сохраняешь ответ
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
michas

цитировать



Зарегистрирован: 28 Янв 2008 11:28:31
Сообщения: 123

СообщениеДобавлено: 24 Апр 2009 19:48:42    Заголовок сообщения: Ответить с цитатой

$this->Question->saveAll($this->data)
Вернуться к началу
Посмотреть профиль Отправить личное сообщение Посетить сайт автора
Dromok

цитировать



Зарегистрирован: 24 Апр 2009 17:01:45
Сообщения: 6

СообщениеДобавлено: 24 Апр 2009 23:30:42    Заголовок сообщения: Ответить с цитатой

Ура сработало! Спасибо!
Только надо так:
$this->Question->Answer->saveAll($this->data)
без Answer не сработало Sad
А если там десяток связанных моделей, их все надо указывать?
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
michas

цитировать



Зарегистрирован: 28 Янв 2008 11:28:31
Сообщения: 123

СообщениеДобавлено: 26 Апр 2009 11:31:21    Заголовок сообщения: Ответить с цитатой

Если не сработало так как я написал, значит связи не правильно настроенны
_________________
Все самое интересное в реальном времени - xmpp:cakephp@conference.jabber.ru
Вернуться к началу
Посмотреть профиль Отправить личное сообщение Посетить сайт автора
GoodMusicForever

цитировать



Зарегистрирован: 01 Авг 2009 02:53:51
Сообщения: 4
Откуда: Russia

СообщениеДобавлено: 08 Авг 2009 14:44:15    Заголовок сообщения: Связи в моделях Ответить с цитатой

Действительно и как я раньше не догадался
Вернуться к началу
Посмотреть профиль Отправить личное сообщение Отправить e-mail
Имя
Сообщение

Смайлики
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