Cakephp 使用foreach创建多个记录
我正在尝试使用cakephp插入多条记录。我的控制器代码如下所示:Cakephp 使用foreach创建多个记录,cakephp,Cakephp,我正在尝试使用cakephp插入多条记录。我的控制器代码如下所示: if (!empty($this->request->data)) { foreach($this->request->data['Deal']['deal_date'] as $key => $data) { $this->Deal->create(); $this->
if (!empty($this->request->data)) {
foreach($this->request->data['Deal']['deal_date'] as $key => $data)
{
$this->Deal->create();
$this->Deal->id = $id;
$this->request->data['Deal']['deal_date'] = $data;
$this->request->data['Deal']['recur'] = $this->request->data['Deal']['recur'][$key];
if ($this->Deal->save($data)) {
$this->Session->setFlash(__('The deal has been saved'));
//$this->redirect(array('action' => 'index'));
} else {
$this->Session->setFlash(__('The deal could not be saved. Please, try again.'));
}
}
}
没有正确地将数据插入数据库。我在所有输入字段中都使用了数组。有什么想法吗?//试试这个
if (!empty($this->request->data)) {
$myData = array();
foreach($this->request->data['Deal']['deal_date'] as $key => $data)
{
$this->Deal->create();
$myData['Deal']['deal_date'] = $data;
$myData['Deal']['recur'] = $this->request->data['Deal']['recur'][$key];
if ($this->Deal->save($myData)) {
$this->Session->setFlash(__('The deal has been saved'));
//$this->redirect(array('action' => 'index'));
} else {
$this->Session->setFlash(__('The deal could not be saved. Please, try again.'));
}
unset($myData);
}
}
使用
要插入多行,请使用cornelb提到的savemany或saveall, 但是,请尝试通过打印sql日志来调试代码不工作的原因
if (!empty($this->request->data)) {
foreach($this->request->data['Deal']['deal_date'] as $key => $data)
{
$this->Deal->create();
$this->Deal->id = $id;
$this->request->data['Deal']['deal_date'] = $data;
$this->request->data['Deal']['recur'] = $this->request->data['Deal']['recur'][$key];
if ($this->Deal->save($data)) {
$log=$this->Deal->getDataSource()->getLog(false, false);
echo "<pre>";print_r($log);exit;
$this->Session->setFlash(__('The deal has been saved'));
//$this->redirect(array('action' => 'index'));
} else {
$this->Session->setFlash(__('The deal could not be saved. Please, try again.'));
}
}
}
if(!empty($this->request->data)){
foreach($key=>$data)的形式($this->request->data['Deal']['Deal\u date']
{
$this->Deal->create();
$this->Deal->id=$id;
$this->request->data['Deal']['Deal\u date']=$data;
$this->request->data['Deal']['recur']=$this->request->data['Deal']['recur'][$key];
如果($this->Deal->save($data)){
$log=$this->Deal->getDataSource()->getLog(false,false);
回显“;打印($log);退出;
$this->Session->setFlash(_u(‘交易已保存’));
//$this->redirect(数组('action'=>'index'));
}否则{
$this->Session->setFlash(_u('交易无法保存。请重试');
}
}
}
它可以工作,但如果我在输入字段中输入两个日期,它会生成计数器3,即生成三个循环。你能猜出,问题出在哪里吗@康奈尔
if (!empty($this->request->data)) {
foreach($this->request->data['Deal']['deal_date'] as $key => $data)
{
$this->Deal->create();
$this->Deal->id = $id;
$this->request->data['Deal']['deal_date'] = $data;
$this->request->data['Deal']['recur'] = $this->request->data['Deal']['recur'][$key];
if ($this->Deal->save($data)) {
$log=$this->Deal->getDataSource()->getLog(false, false);
echo "<pre>";print_r($log);exit;
$this->Session->setFlash(__('The deal has been saved'));
//$this->redirect(array('action' => 'index'));
} else {
$this->Session->setFlash(__('The deal could not be saved. Please, try again.'));
}
}
}