2

私は新しいケーキPHP開発者です。複数のレコードを挿入しようとしていますが、できません。テーブルの構造は次のとおりです。テーブル名:エージェント

==============================================  
 id | お問い合わせ| 名前| 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

これだと思います

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

に置き換える必要があります

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

保存の代わりにsaveall()を使用します。

于 2013-02-12T12:37:19.043 に答える