Изо всех сил, чтобы сохранить в 2 таблицах с hasOne ассоциации с cakePHP 3 - PullRequest
0 голосов
/ 03 ноября 2018

Я борюсь с ассоциацией hasOne. Вот мои 2 таблицы:

database table rows

На самом деле у «Etudiant» (имеется в виду учащийся) есть один пользователь, связанный с идентификатором внешнего ключа, присутствующим в обеих таблицах, который является первичным ключом пользователей.

Вот модель EtudiantTable (студент):

class EtudiantTable extends Table
{

    /**
     * Initialize method
     *
     * @param array $config The configuration for the Table.
     * @return void
     */
    public function initialize(array $config)
    {
        parent::initialize($config);

        $this->setTable('etudiant');
        $this->setDisplayField('ETUDIANT_ID');
        $this->setPrimaryKey('ETUDIANT_ID');
        $this->addBehavior('Timestamp');

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

        $this->belongsToMany('Tuteuriut', [
            'foreignKey' => 'ETUDIANT_ID',
            'targetForeignKey' => 'TUTEURIUT_ID',
            'joinTable' => 'Suivre'
        ]);
        $this->belongsTo('Users', [
            'foreignKey' => 'ID',
            'joinType' => 'INNER'
        ]);
    }

А вот функция добавления в EtudiantController:

public function add()
    {
        $etudiant = $this->Etudiant->newEntity();
        if ($this->request->is('post')) {
            $etudiant = $etutable->patchEntity($etudiant, $this->request->data(), [
                'associated' => ['Users']
            ]);
            if ($this->Etudiant->save($etudiant)){
                $this->Flash->success(__('The etudiant has been saved.'));
                return $this->redirect(['action' => 'index']);
            }
            $this->Flash->error(__('The etudiant could not be saved. Please, try again.'));
        }
        $this->set(compact('etudiant'));
    }

А моя модель usersTable выглядит так: $this->belongsTo('Users', [ 'foreignKey' => 'ID', 'joinType' => 'INNER' ]);

Я хочу сделать это: когда я вставляю Etudiant, он вставляет нового пользователя, и оба имеют одинаковый идентификатор. Но в настоящее время, когда я вставляю Etudiant, я получаю сообщение об ошибке «нет значения по умолчанию… идентификатор пуст», но предполагается, что идентификатор вставляется автоматически.

Я полностью застрял, поэтому мне нужна ваша помощь. Заранее спасибо.

...