HasOne关联表未保存

问题描述 投票:0回答:1

嗨,我正在尝试同时保存2个表(条目和条件)中的数据。条目有一个名为foreign_key的列,它与Conditions主要id的关系。

我正在测试保存部分,我的一个表(条件)已保存,但我的其他表(条目)没有。

Entry.php

protected $_accessible = [
        'metadata' => true,
        'type' => true,
        'foreign_key' => true,
        'created' => true,
        'modified' => true,
        'condition' => true
    ];

Condition.php

protected $_accessible = [
        'user_id' => true,
        'data' => true,
        'created' => true,
        'modified' => true,
        'user' => true,
        'entry' => true
    ];

ConditionsTable.php(我宣布关联的地方)

public function initialize(array $config)
    {
        parent::initialize($config);

        $this->setTable('conditions');
        $this->setDisplayField('id');
        $this->setPrimaryKey('id');

        $this->addBehavior('Timestamp');

        $this->belongsTo('Users', [
            'foreignKey' => 'user_id',
            'joinType' => 'INNER'
        ]);

        $this->hasOne('Entries', [
            'foreignKey' => 'foreign_key',
            'bindingKey' => 'id',
            'propertyName' => 'entries',
            'joinType' => 'INNER'
        ]);
    }

DataControlellr.php(我正在测试保存)


        $this->loadModel('Conditions');

        $data = [
            'user_id' => 'b26ee991-a27c-441b-a78b-dd2a1dbf5164',

            'data' => json_encode(['test'=>1,'test2' => 2]),
            'entry' =>[
                'meta' => json_encode(['test'=>1,'test2' => 2]),
                'type' => 'conditions'
            ]
        ];

        $entity = $this->Conditions->newEntity($data,['associated' => 'Entries']);
        //dd($entity);
        dd($this->Conditions->save($entity));
        exit;   
    }

所以条目表再次没有保存行和条件,我相信我正在使用正确的关联(有一个),但也许这不是正确的逻辑?非常感谢。

cakephp cakephp-3.0
1个回答
1
投票

您的数据中的密钥和您的关联名称需要匹配。您可能希望将关联更改为:

$this->hasOne('Entries', [
    'foreignKey' => 'foreign_key',
    'bindingKey' => 'id',
    'joinType' => 'INNER'
]);

假设fhir_entries表的类称为EntriesTable,而不是FhirEntriesTable

或者,保留名为它的关联,但将propertyName更改为entryhasOne属性应该是单数)。或者,将其更改为fhir_entry和数据数组中的键,从entryfhir_entry匹配。

© www.soinside.com 2019 - 2024. All rights reserved.