未保存cakephp saveAll关联模型字段

未保存cakephp saveAll关联模型字段,cakephp,model,Cakephp,Model,我目前正在使用CakePHP2.2.3 我有以下模型关联: 车辆模型->车辆->订单 计划->订单 车辆标签 在车辆控制器内,添加操作,我有: if(!empty($this->request->data)) { if($this->Vehicle->saveAll($this->request->data)) { $this->Session->setFlash('Vehicle was successfully ad

我目前正在使用CakePHP2.2.3

我有以下模型关联:

车辆模型->车辆->订单

计划->订单

车辆标签

在车辆控制器内,添加操作,我有:

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

    if($this->Vehicle->saveAll($this->request->data)) {

        $this->Session->setFlash('Vehicle was successfully added.');
    }

}
$this->request->data数组的格式如下:

array(
    'VehicleModel' => array(
        'category_id' => '2',
        'make_id' => '1'
    ),
    'Order' => array(
        'plan_id' => '2'
    ),
    'Vehicle' => array(
        'vehicle_model_id' => '13',
        'price' => ' 8700',
        'year' => '1994',
        'km' => '100',
        'color' => '61',
        'fuel' => '1',
        'gear' => '20',
        'type' => '51',
        'city' => 'Rio de Janeiro',
        'state' => 'RJ'
    ),
    'Tag' => array(
        'Tag' => array(
            (int) 0 => '69',
            (int) 1 => '11'
        )
    )
)
订单表具有以下字段:

id、计划id、车辆id、已创建、已修改

车辆型号:

class Vehicle extends AppModel {

    public $belongsTo = array('User' , 'VehicleModel');
    public $hasMany = array('Order' , 'Image');
    public $hasAndBelongsToMany = array('Accessory' , 'Tag');
}
订单型号:

class Order extends AppModel {

    public $belongsTo = array('Vehicle' , 'Part' , 'Plan');

    public $validate = array(
        'plan_id' => array(
            'rule' => 'notEmpty'
        )
    );

}
我遇到的问题是,Order.plan_id字段没有保存,尽管所有其他字段都正常保存。我会做错什么


我要说的是,当我手动进行多次保存时,所有的 很好用。我是说,当我写作时:

$this->Vehicle->save()
然后设置

$this->request->data['Order']['vehicle_id'] = $this->Vehicle->id
最后

$this->Vehicle->Order->save()
一切正常。这一切都是我的原因 麻烦

如果是这种情况,请参见where
$this->request->data['Order']['vehicle\u id']=$this->vehicle->id
。与上面的var转储相比,order从不包含与主模型的关系,这让我想问,这是您试图保存的新记录还是更新的记录?我认为,如果您要设置新记录,您可能不需要在此处使用saveAll,因为主id尚未设置。请参阅:

特别是:“如果系统中尚未存在任何关联的模型记录(例如,您希望同时保存新用户及其相关的配置文件记录),则需要先保存主模型或父模型。”


基本上,它们会执行您正在执行的长版本。

需要明确的是,当我手动执行多次保存时,一切正常。我的意思是,当我写:
$this->Vehicle->save()
,然后设置
$this->request->data['Order']['Vehicle\u id']=$this->Vehicle->id
,最后设置
$this->Vehicle->Order->save()
,一切正常。是saveAll给我带来了麻烦。你能发布车型/订单吗?在旧版本的cake中,如果主车型数据不是数据数组中的第一个,它的行为将不一致-你使用的是什么版本的cake?我已经添加了车型/订单车型。至于我使用的版本,它是2.2.3。