没有与CakePHP保存的关系有很多关系

时间:2012-10-23 13:54:37

标签: cakephp model

我有两个模型:EventVenue。一个活动属于一个场地,一个场馆可以举办许多活动。我试图用一个表单一次性保存一个事件和场地。这是我到目前为止在我的控制器中所做的:

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');
?>

非常简单。

现在,创建了EventVenue条记录。但我venue_id表中的events为零;它没有设置为新创建的Venue的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'
    );
}

1 个答案:

答案 0 :(得分:0)

似乎我在使用array('deep' => true)方法时需要使用saveAll()

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

感谢所有评论的人。