Предыдущая тема :: Следующая тема |
Автор |
Сообщение |
ясен_пень
цитировать
Зарегистрирован: 18 Ноя 2009 14:35:43 Сообщения: 8
|
Добавлено: 16 Дек 2009 15:55:28 Заголовок сообщения: добавление в две таблицы |
|
|
Подскажите как сделать чтобы при добавлении данных из представления в таблицу некоторые данные добавлялись в другую таблицу.
Например есть таблицы Занятия, Оценки , Студенты, нужно чтобы при добавлении одного занятия добавились в таблицу Оценки количество записей равное количеству студентов.
Заранее благодарен |
|
Вернуться к началу |
|
|
ANRI_K Гость цитировать
|
|
Вернуться к началу |
|
|
ясен_пень
цитировать
Зарегистрирован: 18 Ноя 2009 14:35:43 Сообщения: 8
|
Добавлено: 17 Дек 2009 14:36:02 Заголовок сообщения: |
|
|
спасибо. Только почему то не хотит сохранять
А можно добавить записи не используя отображение? |
|
Вернуться к началу |
|
|
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 Заголовок сообщения: |
|
|
Все починил, спасибо большое |
|
Вернуться к началу |
|
|
|