2

我是一个新的蛋糕 php 开发人员。我正在尝试插入多条记录,但我不能。我的表结构如下所示:表名:代理

===============================================  
 编号 | 联系方式 | 姓名 | email_add | 地址
===============================================   

控制器代码:

public function send_money()
    {
         $this->layout='agent';
         $this->Agent->create();
         $this->Agent->set($this->data);

         if(empty($this->data) == false)
            {
                    if($this->Agent->save($this->data))
                    {
                        $this->Session->setFlash('Information Added Successfully.');
                        $this->redirect('send_money');
                    }

            }
            else
            {
                $this->set('errors', $this->Agent->invalidFields());    
            }
    }

型号代码是:

<?php
App::uses('AppModel', 'Model');
/**
 * Admin Login Model
 *
 */
 class Agent extends AppModel
 {
    public $name='Agent';
    public $usetables='agents';

    public $validate = array(

    'contact' => array(
    'contact_not_empty' => array(
        'rule' => 'notEmpty',
        'message' => 'Please Give Contact No',
        'last' => true
        ),
    ),

      'name' =>array(
      'rule' => 'notEmpty', // or: array('ruleName', 'param1', 'param2' ...)
      'allowEmpty' => false,
      'message'    => 'Please Enter Name.'
    ),

    'email_add' => array(
            'email_add' => array(
            'rule' => 'email',
            'allowEmpty' => true,
            'message' => 'Please Enter Valid Email',
            'last' => true
    )),



    );

 }

?>

无法使用此代码插入记录。我该怎么办?

4

3 回答 3

3

在您的查询中尝试这个 saveall() 除了保存,希望这会有所帮助

 if($this->Agent->saveall($this->data))

让我知道它是否有效。

于 2013-02-12T11:27:09.663 回答
3

让我解释一切。

首先,您的 html 表单必须如下所示。

<?php echo $this->Form->create('User'); ?>
<tr>
    <td>
        <?php
            echo $this->Form->input('User.0.address',array
            (
                'div'   => null,
                'label' => false,
                'class' => 'span required'
            ));
        ?>

        <?php
            echo $this->Form->input('User.1.address',array
            (
                'div'   => null,
                'label' => false,
                'class' => 'span required'
            ));
        ?>

        <?php
            echo $this->Form->input('User.2.address',array
            (
                'div'   => null,
                'label' => false,
                'class' => 'span required'
            ));
        ?>
    </td>
    <td>
        <input type="submit" value="Add" >
    </td>
</tr>
<?php echo $this->Form->end(); ?>

正如您所看到的,使用 cakephp 同时保存许多记录,您必须如上所述定义它,它将输入字段解析为数组,这是cakephp 约定

我是说User.0.address for first array element

User.1.address for second array element

User.2.address for third array element等等。

现在。

在控制器文件中。

<?php
    function add()
    {
        $this->User->saveAll($this->data['User']);
    }

是的,您已经完成了同时保存多条记录。

我只是告诉你 cakephp 是如何工作的,你需要做的就是根据你的需要在提示上方设置。

祝你好运...

干杯...

随意问... :)

于 2013-02-12T11:40:51.177 回答
1

I think this

php echo $this->Form->create('Agents', array('action' => 'send_money'));?>

should be replaced with

php echo $this->Form->create('Agent', array('action' => 'send_money'));?>

and use saveall() in place of save.

于 2013-02-12T12:37:19.043 回答