Таблица ассоциаций HasOne не сохраняется - PullRequest
0 голосов
/ 12 апреля 2019

Привет. Я пытаюсь сохранить данные в двух таблицах (записи и условия) одновременно.Записи имеют столбец foreign_key, который относится к первичному идентификатору Условий.

Я проверял часть сохранения, и одна из моих таблиц (Условия) сохранена, а другая моя таблица (Записи) - нет.

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
    ];

ConditionTable.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;   
    }

Итак, снова таблица записей не сохраняет строку, а условия, я полагаю, я использую правильную связь (есть), но, возможно, это не такправильная логика?Мы высоко ценим помощь.

1 Ответ

1 голос
/ 12 апреля 2019

Ключ в ваших данных и название вашей ассоциации должны совпадать.Возможно, вы захотите изменить свою ассоциацию следующим образом:

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

, предполагая, что класс для таблицы fhir_entries называется EntriesTable, а не FhirEntriesTable.

. Поочередно оставьтеАссоциация названа как есть, но измените propertyName на entry (свойства hasOne должны быть единственными).Или измените его на fhir_entry и введите ключ в массиве данных от entry до fhir_entry для соответствия.

...