Что я использую: cakephp версии 2.4.1.
Что у меня есть:
таблица channel_settings с атрибутами (id, mask_id, provider_id, servicetype_id, channel_id, created, modified)
таблица channel_alert_defaults с атрибутами (id, provider_id, servicetype_id, channel_id)
На странице добавления нового channel_setting пользователь может вставить каждого провайдера в каждый тип сервиса своего канала.
Теперь мне нужно, чтобы когда пользователь выбирал тип обслуживания для - Любой - тогда, помимо этой одной записи, будет несколько множественных вставок в базу данных для некоторого типа обслуживания, потому что для некоторого типа обслуживания нужен другой канал. Количество множественных вставок зависит от того, сколько провайдеров имеет параметр типа обслуживания и канал в таблице channel_alert_defaults
Вот что я пытаюсь, но до сих пор не понимаю, что такое код множественной вставки.
public function add() {
if ($this->request->is('post')) {
Controller::loadModel('Servicetype');
$this->Servicetype->recursive = -1;
$servicetype = $this->Servicetype->find('all');
$this->request->data['ChannelSetting']['mask_id'] = $this->Session->read('current_mask_id');
$maskid = $this->request->data['ChannelSetting']['mask_id'];
$providerid = $this->request->data['ChannelSetting']['provider_id'];
$servicetypeid = $this->request->data['ChannelSetting']['servicetype_id'];
$this->ChannelSetting->create();
if ($this->request->data['ChannelSetting']['servicetype_id'] == 0) {
Controller::loadModel('ChannelAlertDefaults');
$this->ChannelAlertDefault->recursive = -1;
$channelalertdefault = $this->ChannelAlertDefaults->findByProviderId($providerid);
// loop insert goes here, I think...
if ($this->ChannelSetting->save($this->request->data)) {
$this->Session->setFlash(__('The channel setting has been saved'), 'success');
return $this->redirect(array('action' => 'add'));
}
else {
$this->Session->setFlash(__('The channel setting failed to save'));
}
} else {
if ($this->ChannelSetting->save($this->request->data)) {
$this->Session->setFlash(__('The channel setting has been saved'), 'success');
return $this->redirect(array('action' => 'add'));
}
else {
$this->Session->setFlash(__('The channel setting failed to save'));
}
}
if ($this->ChannelSetting->save($this->request->data)) {
$this->Session->setFlash(__('The channel setting has been saved'), 'success');
return $this->redirect(array('action' => 'add'));
}
else {
$this->Session->setFlash(__('The channel setting failed to save'));
}
}
}
PS: зачем мне это? Так что мне не нужно вставлять данные по одному для каждого провайдера. Спасибо