Торт PHP Принадлежит ко многим экономия ._joinData - PullRequest
0 голосов
/ 27 мая 2020

МОЙ КОД:

Organizations:

        $this->belongsToMany('OS',[
            'className' => 'Sessions',
            'through' => 'OrgSess',
            'foreignKey' => 'org_id',
            'targetForeignKey' => 'session_id',
            'joinTable' => 'Sessions',
            'dependent' => true
            ]);

Organization-Session:

        $this->belongsTo('Organizations',[
            'foreignKey' => 'org_id',
            ]);

        $this->belongsTo('Sessions',[
            'foreignKey' => 'session_id'
            ]);

Sessions:

        $this->belongsToMany('OS',[
            'className' => 'Organizations',
            'through' => 'OrgSess',
            'foreignKey' => 'session_id',
            'targetForeignKey' => 'org_id',
            'joinTable' => 'Organizations',
            //'dependent' => true
        ]);

Sessions Controller:

    public function edit($id)
    {
        $this->loadModel('Programs');
        $ps = $this->Programs->getProgramSelect();
        $lock = true;
        $comy = $this->UserAuth->getOrganizationId();

        if($this->UserAuth->getPartnerId()){
            $this->loadModel('Partners');
            $pField = $this->Partners->pORGSelect($this->UserAuth->getPartnerId(),$comy);
        } else {
            $pField = null;    
        }

        $session = $this->Sessions->get($id, ['contain'=>['OS']]);
        dump($session);
        if ($this->request->is(['put','post'])) {
            $session = $this->Sessions->patchEntity($session, $this->request->getData(), ['validate'=>'forAE','associated'=>['OS._joinData']]); 
            $usery = $this->UserAuth->getUserId();
            $session['user_id'] = $usery;
            $session['org_id'] = $comy;

            $session['program_id'] = $session['program_id'];
            $session['name'] = $session['name'];

            $session->o_s[] = ['_joinData'=>['org_id'=>$comy,'session_id'=>60]];
            //$session->o_s[0]->_joinData->org_id = 10;

               if ($this->Sessions->save($session)) {
                   dump($session);
                    $this->Flash->success(__('The Sessions has been edited.'));
                    return $this->redirect(['action' => 'index']);
                } else {
                    $this->Flash->error(__('The Sessions could not be edited.'));
                    dump($session->getErrors());
                }

        } else {
            $session['reg_begin'] = $session['reg_begin']->format('Y-m-d');    
            $session['reg_end'] = $session['reg_end']->format('Y-m-d');    
            $session['program_begin'] = $session['program_begin']->format('Y-m-d');    
            $session['program_end'] = $session['program_end']->format('Y-m-d');    
        } 
        $this->set(compact('session', 'ps','lock','pField'));
    }

Я пытаюсь создать запись в Organization-Session после того, как сеанс был отправлен. Сессия правильно сохраняется в своей таблице, но я не могу добавить запись в Organization-Session.

Я не понимаю, почему у меня возникают проблемы с сохранением этой записи. Я мог бы сделать это вручную, но предпочел бы использовать ассоциации.

Пожалуйста, помогите!

...