模型与CakePHP 1.3中的SaveAll关联

时间:2016-12-20 13:15:39

标签: php cakephp cakephp-1.3

我有动态表,所以我动态创建了2个模型。然后我在它们之间创建了hasOne的关联。它可以很好地读取数据,但是当我使用saveAll()未定义的索引:NodeData [CORE / cake / libs / model / model.php,第1702行]

时,我收到此错误

我获得了Node和NodeData模型的代码

class Node extends PostgresAppModel {
  var $name = 'Node';
  var $useDbConfig = 'pgdata';
  var $useTable = false;
  var $recursive = 0;

-

class NodeData extends PostgresAppModel {
  var $name = 'NodeData';
  var $useDbConfig = 'pgdata';
  var $useTable = false;
  var $primaryKey = 'node_id';
  var $recursive = 0; 

在控制器中我配置了操作:

function edit($network_id = null, $variation_id = null, $node_id = null)

    $prefix = $this->Network->getNetworkPrefix($network_id);

    if (!empty($this->data)) {
        $this->Node->setSource(sprintf('%s_node', $prefix));
        $this->NodeData->setSource(sprintf('%s_node_data', $prefix));
        $this->Node->bindModel(array(
            'hasOne' => array(
                'NodeData' => array(
                    'foreignKey' => 'node_id',
                    'className' => 'NodeData',
                )
            )
        ));
        $this->data['NodeData']['id'] = $this->data['NodeData']['node_id'];
        if ($this->Node->saveAll($this->data)) {

我调试了model.php中的行,但无法理解为什么$ this-> {$ type} [$ association]给出错误

$values[$this->{$type}[$association]['foreignKey']] = $this->id;

1 个答案:

答案 0 :(得分:1)

模型需要绑定在模型中,而不是绑定在控制器中。