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

добавление в две таблицы

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

цитировать



Зарегистрирован: 18 Ноя 2009 14:35:43
Сообщения: 8

СообщениеДобавлено: 16 Дек 2009 15:55:28    Заголовок сообщения: добавление в две таблицы Ответить с цитатой

Подскажите как сделать чтобы при добавлении данных из представления в таблицу некоторые данные добавлялись в другую таблицу.
Например есть таблицы Занятия, Оценки , Студенты, нужно чтобы при добавлении одного занятия добавились в таблицу Оценки количество записей равное количеству студентов.

Заранее благодарен
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
ANRI_K
Гость
цитировать






СообщениеДобавлено: 16 Дек 2009 16:07:18    Заголовок сообщения: Ответить с цитатой Изменить/удалить это сообщение

функция saveAll
/wiki/Manual/Developing/Models/Saving
Вернуться к началу
ясен_пень

цитировать



Зарегистрирован: 18 Ноя 2009 14:35:43
Сообщения: 8

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

спасибо. Только почему то не хотит сохранять Sad
А можно добавить записи не используя отображение?
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
ANRI_K
Гость
цитировать






СообщениеДобавлено: 17 Дек 2009 15:43:38    Заголовок сообщения: Ответить с цитатой Изменить/удалить это сообщение

Передаешь в метод save() массив вида:
Код:
Array
(
    [ModelName] => Array
        (
            [fieldname1] => 'value'
            [fieldname2] => 'value'
        )
)

Для saveAll()
1) Для сохранения множества записей одной модели:
Код:
Array
(
    [0] => Array
        (
            [title] => title 1
        )
    [1] => Array
        (
            [title] => title 2
        )
)

Команда для сохранения данных, приведенных выше, будет выглядеть так:
<? $this->Article->saveAll($data['Article']); ?>

2) Для сохранения записи вместе со связанной записью, имеющей ассоциации hasOne или belongsTo, массив данных должен выглядеть так:
Код:
Array
(
    [User] => Array
        (
            [username] => billy
        )
    [Profile] => Array
        (
            [sex] => Male
        [occupation] => Programmer
        )
)


Команда для сохранения этих данных будет выглядеть так:
<? $this->Article->saveAll($data); ?>

3) Для сохранения записи вместе с связанными записями, имеющих hasMany ассоциацию, массив данных должен выглядеть так:
Код:
Array
(
    [Article] => Array
        (
            [title] => My first article
        )
    [Comment] => Array
        (
            [0] => Array
                (
                    [comment] => Comment 1
            [user_id] => 1
                )
        [1] => Array
                (
                    [comment] => Comment 2
            [user_id] => 2
                )
        )
)


Команда для сохранения этого массива $data будет выглядеть так:
<? $this->Article->saveAll($data); ?>

На той странице, что я указал, расписано.
Вернуться к началу
ясен_пень

цитировать



Зарегистрирован: 18 Ноя 2009 14:35:43
Сообщения: 8

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

Не хотит почему-то. Формирую массив, вроде как надо.Оно говорит типа все добавлено, но ничего не добавляется
вот код, подскажите пожалуйста что я делаю не так..
Код:
function add() {
               $this->loadModel('Ocenki');
               $this->loadModel('Student');
               $ocen = $this->Ocenki->query('select MAX(Ocenki.id) from ocenkis as Ocenki');
               $this->set('ocenkis', $ocen);
               $stud = $this->Student->query('select Student.id from students as Student');
               $this->set('students',$stud);
               $i = 0;
                            foreach($stud as $st) {
                              $ar [$i]= array (                    'student_id' => $st['Student']['id'],
                                                                    'zanyatie_id' => $ocen[0][0]['MAX(Ocenki.id)'],
                                                                    'ocenka' => null
                                              );
                               $i++;
                                 }
      if (!empty($this->data)) {
         $this->Zanyaty->create();
         if ($this->Zanyaty->save($this->data)) {
                                 //
                                   $this->Ocenki->saveAll($ar['Ocenki']);
                               //
            $this->Session->setFlash(__('The Zanyaty has been saved', true));
            $this->redirect(array('action'=>'index'));
         } else {
            $this->Session->setFlash(__('The Zanyaty could not be saved. Please, try again.', true));
         }
      }
      $predmets = $this->Zanyaty->Predmet->find('list');
      $this->set(compact('predmets'));
   }

Заранее благодарен.
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
ясен_пень

цитировать



Зарегистрирован: 18 Ноя 2009 14:35:43
Сообщения: 8

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

Все починил, спасибо большое
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
Имя
Сообщение

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