0

2 つのテーブルと結合テーブルがあります。$hasAndBelongsToMany を使用してみましたが、うまくいかなかったので、代わりに結合テーブルのモデルを作成して使用しました。

User hasMany Membership
Membership belongsTo User, Club
Club hasMany Membership.

両方のテーブルに保存するフォームがあります。

function dashboard_add(){

        $user = $this->Session->read('User');

        $register = false;

        if (!empty($this->data)) {



                if($this->Club->saveAll($this->data)){
                    $this->Session->setFlash(__('You have registered your club. You will be contacted soon!', true), 'default', array('class' => 'success'));
                    $this->redirect(array('action' => 'index'));
                } else {   
                    $this->Session->setFlash(__('There was a problem with your registration. Please, try again.', true), 'default', array('class' => 'warning'));
                }

        }


        if (empty($this->data)) {
            $this->data = $this->User->read(null, $user['User']['id']);
        }

        $this->set(compact('register'));

    }

ユーザーモデルには

var $hasMany = array(
        'Membership' => array(
            'className' => 'Membership',
            'foreignKey' => 'user_id'
        )
    );

会員モデルには

var $belongsTo = array('User','Membership');

クラブモデルには

var $hasMany = array(
        'Membership' => array(
            'className' => 'Membership',
            'foreignKey' => 'club_id'
        ),
        'Upload' => array(
            'className' => 'Upload',
            'foreignKey' => 'club_id'
        )
    );

エラーは発生しません。club テーブルにはデータが入力されますが、membership および user テーブルは挿入/更新されません。

更新: debug($this->Club->save($this->data));

Array
(
    [User] => Array
        (
            [id] => 1
            [first_name] => this
            [last_name] => that
            [company_name] => other
            [city] => this
            [state] => that
            [zip] => other
            [telephone] => that
            [email_address] => this
        )

    [Club] => Array
        (
            [address] => fvdfvx
            [title] => xcvxcv
            [category] => xcvxcv
            [modified] => 2012-05-03 06:31:12
        )

)
4

1 に答える 1

0

CakePHP 1.3.x を使用していると思います。Cake が多くのモデルを同時に保存する方法を理解するには、ドキュメントを参照してください。保存するすべてのモデルを含む配列を生成する必要があります。例:

Array
(
    [Article] => Array
        (
            [title] => My first article
        )
    [Comment] => Array
        (
            [0] => Array
                (
                    [comment] => Comment 1
            [user_id] => 1
                )
        [1] => Array
                (
                    [comment] => Comment 2
            [user_id] => 2
                )
        )
)

http://book.cakephp.org/1.3/view/1031/Saving-Your-Data

どうやら $this->data には単純な配列 [User] しかありません。例のように保存する複数の配列ではありません。

お役に立てば幸いです。よろしく。

于 2012-05-08T23:24:44.213 に答える