用hasOne与CakePHP 3关联努力保存在2个表中

时间:2018-11-03 17:17:43

标签: cakephp orm associations cakephp-3.0

我正在为hasOne协会而苦苦挣扎。这是我的2张桌子:

database table rows

实际上,“学员”(指学生)有一个与之关联的用户,并且这两个表中都存在外键ID,这是用户的主键。

这是模型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中的add函数:

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时,它将插入一个新用户,并且两者都具有相同的ID。 但是目前,当我插入一个Etudiant时,我会收到一条错误消息:“无默认值... id为空”,但该ID应该被自动插入。

我完全被困住了,所以需要您的帮助。提前致谢。

0 个答案:

没有答案