如何在CakePHP 3.0中保存关联表

时间:2015-06-03 09:14:57

标签: cakephp cakephp-3.0

您好我刚刚创建了一个将数据保存在多个表中的功能。 即便如此,我也遵循了指示 Instruction for Cakephp 3.0

它只将数据保存在一个表中。

请看我错过了什么。

谢谢

public function saveTest()
{
    $goods = TableRegistry::get('Goods');
    //$data = $this->request->data;
    $data = [
        'brand' => 'brand',
        'name' => 'name',
        'dis_price' => 100,
        'w_price' => 90,
        'line_des' => 'haha',
        'line_w_des' => 'hehe',
        'hash_tag' => 'hoho',
        'price' => 100,
        'good_stock' => [
            'options' => 'asd',
            'stock_count' => 100
    ]];
    Debugger::log($data);
    $entity = $goods->newEntity($data, [
        'associated' => ['GoodsStocks']
    ]);
    Debugger::log($goods->save($entity));
    //Debugger::log('3');
}


public function initialize(array $config)
{
    $this->entityClass('App\Model\Entity\Goods');
    $this->table('goods');
    $this->displayField('name');
    $this->primaryKey('id');
    $this->addBehavior('Timestamp');
    $this->hasMany('GoodsStocks',[
        'alias' => 'Users',
        'foreignKey' => 'good_id',
        'dependent' => true
    ]);
}

不幸的是,它只将数据保存在Goods表中。

谢谢

1 个答案:

答案 0 :(得分:1)

您的GoodStock协会的数组应该是关联名称的低位版本。另外,它可能不会成为一维数组,因此它是一个hasMany关联。您可以找到更多信息here

因此,您的代码应该更加无效:

$data = [
    'brand' => 'brand',
    'name' => 'name',
    'dis_price' => 100,
    'w_price' => 90,
    'line_des' => 'haha',
    'line_w_des' => 'hehe',
    'hash_tag' => 'hoho',
    'price' => 100,
    'good_stocks' => [
        ['options' => 'asd', 'stock_count' => 100]
    ]
];

我希望你觉得它很有用。

PS:对不起任何语法错误,但英语不是我的母语;)