Я борюсь с ассоциацией hasOne. Вот мои 2 таблицы:
На самом деле у «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, я получаю сообщение об ошибке «нет значения по умолчанию… идентификатор пуст», но предполагается, что идентификатор вставляется автоматически.
Я полностью застрял, поэтому мне нужна ваша помощь. Заранее спасибо.