Cakephp 使用foreach创建多个记录

Cakephp 使用foreach创建多个记录,cakephp,Cakephp,我正在尝试使用cakephp插入多条记录。我的控制器代码如下所示: if (!empty($this->request->data)) { foreach($this->request->data['Deal']['deal_date'] as $key => $data) { $this->Deal->create(); $this->

我正在尝试使用cakephp插入多条记录。我的控制器代码如下所示:

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.'));
                }

            }

        }