Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/powerbi/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
cakephp手动保存一对多_Cakephp - Fatal编程技术网

cakephp手动保存一对多

cakephp手动保存一对多,cakephp,Cakephp,我有模型A,其中有许多模型B场景。我已按以下方式定义了从属关系: class A extends AppModel { var $hasMany = array( 'B' => array( 'className' => 'A', 'foreignKey' => 'keyword_

我有模型A,其中有许多模型B场景。我已按以下方式定义了从属关系:

class A extends AppModel {
    var $hasMany = array(
                        'B' => array(
                                    'className' => 'A',
                                    'foreignKey' => 'keyword_id',
                                    'dependent' => true
                                    )
                    );
A类有以下列:

keyword
created
keyword_id
category_id
B类(表B)有以下列:

keyword
created
keyword_id
category_id
我的问题是,当我执行下面的代码时,我希望表B具有与关键字id相对应的关键字id和类别id

    $data = array(
                   'A' => array(
                    'keyword' ( => 'zzzzz'
                            ),
                        'B' => array(
                                 3,4,5
                                 )
                        );
        $this->A->saveAll($data);

当我执行以下脚本时,表B中对应的关键字id只有“NUll”。是否还有其他需要更改的地方。

我认为您的数据格式不正确。我认为它的格式应该更像这样:

$data = array(
     0  => array(
         'A' => array(
               'keyword' => 'zzzzzz',
               'created' => '',
          ),
         'B' => array(
              0 => array(
                  'category_id' => 3,
              ),
              1 => array(
                  'category_id' => 4,
              ),
              etc.,
          ),
     ),
     etc.,
);

您应该有一个像user2076809建议的数据结构(顺便说一句,这个昵称不错!),如果您使用的是Cake 2.X,请使用saveAssociated方法,如下所示:

$this->A->saveAssociated($data);

请提供正确的型号名称,而不是“A”和“B”。它将提高可读性,并帮助我们更容易地诊断您的问题。嗨,马丁,A类是“关键字”。其中包含“关键字”、“已创建”列。B类是“关键字类别”,它存储关键字id和类别id。这不起作用。它没有插入表B(或关键字类别)中的行