МОЙ КОД:
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.
Я не понимаю, почему у меня возникают проблемы с сохранением этой записи. Я мог бы сделать это вручную, но предпочел бы использовать ассоциации.
Пожалуйста, помогите!