0

私は2つのモデルを持っています:EventVenue。イベントは会場に属し、会場は多くのイベントを持つことができます。イベントと会場の両方を1つのフォームで一度に保存しようとしています。これは私がこれまでに私のコントローラーに持っているものです:

public function add() {
    if ($this->request->is('post')) {
        if ($this->Event->saveAll($this->request->data)) {
            $this->Session->setFlash('Event successfully saved');
        }
    }
}

そして、これは私のフォームです:

<?php
    echo $this->Form->create('Event');
    echo $this->Form->inputs(array(
        'legend' => 'Event Details',
        'Event.date',
        'Event.title'
    ));
    echo $this->Form->inputs(array(
        'legend' => 'Venue Details',
        'Venue.name',
        'Venue.street_address',
        'Venue.locality' => array('label' => 'Town/city'),
        'Venue.postal_code'
    ));
    echo $this->Form->end('Save Event');
?>

ものすごく単純。

Eventこれで、とVenueレコードの両方が作成されます。しかしvenue_id、私のeventsテーブルではゼロです。新しく作成された会場のIDには設定されません。どうすればこれを修正できますか?とても簡単だと思います!

編集:私のEventモデル:

<?php
class Event extends AppModel {

    public $name = 'Event';
    public $actsAs = array(
        'Containable'
    );
    public $belongsTo = array(
        'Venue'
    );
}

私のVenueモデル:

<?php
class Venue extends AppModel {
    public $name = 'Venue';
    public $hasMany = array(
        'Event'
    );
}
4

1 に答える 1

0

array('deep' => true)メソッドを使用するときに使用する必要があるようsaveAll()です。

if ($this->Event->saveAll($this->request->data, array('deep' => true))) {
    $this->Session->setFlash('Event successfully saved');
}

それにもかかわらず、コメントしてくれたすべての人に感謝します。

于 2012-10-23T14:37:18.793 に答える