如何在CakePHP 2中为3个树状连接表保存数据

如何在CakePHP 2中为3个树状连接表保存数据,php,cakephp,orm,cakephp-2.0,Php,Cakephp,Orm,Cakephp 2.0,我有3个树状连接表。他们的模式如下: Member{ //Some column } Transactions{ member_id :: foreign key of member table //Some other column } TransactionItems{ transaction_id :: foreign key of Transaction table //Some other column } 我这样定义模型: class Members extends AppMo

我有3个树状连接表。他们的模式如下:

Member{
//Some column
}

Transactions{
member_id :: foreign key of member table
//Some other column
}

TransactionItems{
transaction_id :: foreign key of Transaction table
//Some other column
}
我这样定义模型:

class Members extends AppModel {

    public $primaryKey = 'id';
    public $hasOne = array(
        'Transactions' => array(
            'className' => 'Transactions',
            'foreignKey' => 'member_id',
            'dependent' => true
        )
    );

}


class Transactions extends AppModel {

    public $primaryKey = 'id';

    public $belongTo = array('Members');

    public $hasOne = array(
        'TransactionItems' => array(
            'className' => 'TransactionItems',
            'foreignKey' => 'transaction_id',
            'dependent' => true
        )
    );
}


class TransactionItems extends AppModel {

    public $primaryKey = 'id';

    public $belongTo = array('Transactions');

    public $belongsTo = array(
        'Transactions' => array(
            'className' => 'Transactions',
            'foreignKey' => 'transaction_id'
        )
    );


}
我有一个数据数组,我想保存到数据库中。我的计划是:

Array(

[Members] = [],//Array
[Transactions] = [],//Array
[TransactionItems] = []//Array

)
问题是每当我运行
$this->Members->saveAll($data)
时。它将数据保存在成员和事务表中。但不要在TransactionItems表中创建数据。我想一次保存所有3个表

任何帮助都将不胜感激。

二级(及以上)关联必须嵌套,即数据结构需要:

array(
    'Members' => array(),
    'Transactions' => array(
        'TransactionItems' => array()
    )
)
有点尴尬,但这就是它在2.x中的工作原理。您可以在读取数据时始终引用返回的结构,保存数据时需要相同

此外,您必须将
deep
选项设置为
true
,以便能够保存二级及以上关联(默认情况下仅保存一级关联):

另见

$this->Members->saveAll($data, array('deep' => true));