Bonjour,
Voila je rencontre un petit problème avec mon code.
j'ai toirs table (patient, patientinterne,Serviceorientation) avec comme relation Patient hasMany patientinterne, Serviceorientation hasMany Patientinterne
voicic ce que donne mes models:
public $name = 'Patientinterne';
public $belongsTo = array(
'Patient' => array(
'className' => 'Patient',
'foreignKey' => 'patients_id',
'counterCache' => true
),
'Servicesorientation' => array(
'className' => 'Servicesorientation',
'foreignKey' => 'servicesorientations_id',
'counterCache' => true
)
);
Pour le service orientation j'ai ceci:
public $name = 'Servicesorientation';
public $hasMany = array(
'Stagiaire' => array(
'className' => 'Stagiaire',
'foreignKey' => 'servicesorientations_id',
'dependent' => true
),
'Patientinterne' => array(
'className' => 'Patientinterne',
'foreignKey' => 'servicesorientations_id',
'dependent' => true
),
'Themestage' => array(
'className' => 'Themestage',
'foreignKey' => 'servicesorientations_id',
'dependent' => true
)
);
et pour le patient
public $name = 'Patient';
public $hasMany = array(
'Patientexterne' => array(
'className' => 'Patientexterne',
'foreignKey' => 'patients_id',
'dependent' => true
),
'Patientinterne' => array(
'className' => 'Patientinterne',
'foreignKey' => 'patients_id',
'dependent' => true
)
);
dans mon formulaire d'enregistrement, j'ai ceci:
<?php echo $this->set('title_for_layout','Gestion Hopital | Ajout d\' un nouvel patient interne '); ?>
<div class="panel panel-primary panel-patient">
<div class="panel-heading">
<p>
<strong class="panel-title">Nouveau Patient interne</strong> <span class="title-top">
<?php echo $this->Html->link('',array('admin' =>true,'controller' => 'Personnels','action' => 'index','full_base' => true),array('class'=> 'btn btn-default btn-xs glyphicon glyphicon-remove','title' => 'Retirer'),'Êtes vous sure de vouloir Fermer cette plage ?'); ?>
</span>
</p>
</div>
<div class="panel-body">
<?php echo $this->Form->create('Patient',array('class'=>'form-inline')); ?>
<div class="col-lg-6">
<div class="col-lg-12 line-input">
<?php
echo $this->Form->input('Patient.cas_patologie', array('label'=>' Pathologie *','class'=>'form-control','required'=>true,'options'=>array('1'=>'Nouveau Cas','2'=>'Ancien Cas'),'empty'=>'(Choississez)'));
?>
</div>
<div class="col-lg-12 line-input">
<?php
echo $this->Form->input('Patient.nom_patient', array('label'=>'Nom du patient* ','type' => 'text','class'=>'form-control','placeholder'=>'Entrer le nom','required'=>true));
?>
</div>
<div class="col-lg-12 line-input">
<?php
echo $this->Form->input('Patient.prenom_patient', array('label'=>'Prénom du patient* ','type' => 'text','class'=>'form-control','placeholder'=>'Entrer le prénom','required'=>true));
?>
</div>
<div class="col-lg-12 line-input">
<?php
echo $this->Form->input('Patient.sexe', array('label'=>' Sexe *','class'=>'form-control','required'=>true,'options'=>array('M'=>'Masculin','F'=>'Féminin'),'empty'=>'(Choississez)'));
?>
</div>
<div class="col-lg-12 line-input">
<?php
echo $this->Form->input('Patient.age', array('label'=>'Age ','type' => 'text','class'=>'form-control','placeholder'=>'Age du patient','required'=>true));
?>
</div>
<div class="col-lg-12 line-input">
<?php
echo $this->Form->input('Patient.statut_patient', array('label'=>' Statut *','class'=>'form-control','required'=>true,'options'=>array('MM'=>'Marié régime monogamique','MP'=>'Marié régime polygamique','CO'=>'Cohabitation','CE'=>'Célibataire','VE'=>'Veuve (Veuf)','DI'=>'Divorcé'),'empty'=>'(Choississez)'));
?>
</div>
<div class="col-lg-12 line-input">
<?php
echo $this->Form->input('Patient.identification_femme_enceinte', array('label'=>' Femme enceinte *','class'=>'form-control','required'=>true,'options'=>array('1'=>'OUI','2'=>'NON'),'empty'=>'(Choississez)'));
?>
</div>
<div class="col-lg-12 line-input">
<?php
echo $this->Form->input('Patient.profession', array('label'=>'Profession ','type' => 'text','class'=>'form-control','placeholder'=>'Profession','required'=>true));
?>
</div>
<div class="col-lg-12 line-input">
<?php
echo $this->Form->input('Patient.ville_patient', array('label'=>'Ville ','type' => 'text','class'=>'form-control','placeholder'=>'Ville de résidence','required'=>true));
?>
</div>
<div class="col-lg-12 line-input">
<?php
echo $this->Form->input('Patient.lieuderesidence', array('label'=>'Quartier ','type' => 'text','class'=>'form-control','placeholder'=>'Quartier','required'=>true));
?>
</div>
<div class="col-lg-12 line-input">
<?php
echo $this->Form->input('Patient.nom_parain', array('label'=>'Parain à prévenir ','type' => 'text','class'=>'form-control','placeholder'=>'Personne à prévenir','required'=>true));
?>
</div>
<div class="col-lg-12 line-input">
<?php
echo $this->Form->input('Patient.numphoneparain', array('label'=>'Téléphone Portable/Fixe *','type' => 'text','class'=>'form-control','placeholder'=>'Entrer le numero de telephone','required'=>true,'id' => 'idclasse'));
?>
</div>
<div class="col-lg-12 line-input">
<?php
echo $this->Form->radio('Patient.reference_patient',array('1'=>'OUI','2'=>'NON'),array('legend'=>' Référence Patient *','class'=>'form-control','required'=>true,'separator' => ' '));
?>
</div>
</div>
<div class="col-lg-6">
<div class="col-lg-12 line-input">
<?php
echo $this->Form->input('Patientinterne.0.temperature', array('label'=>'Température ','type' => 'text','class'=>'form-control','placeholder'=>'Température','required'=>true));
?>
</div>
<div class="col-lg-12 line-input">
<?php
echo $this->Form->input('Patientinterne.0.poid', array('label'=>'Poid ','type' => 'text','class'=>'form-control','placeholder'=>'Poid','required'=>true));
?>
</div>
<div class="col-lg-12 line-input">
<?php
echo $this->Form->input('Patientinterne.0.taille', array('label'=>'Taille ','type' => 'text','class'=>'form-control','placeholder'=>'Taille','required'=>true));
?>
</div>
<div class="col-lg-12 line-input">
<?php
echo $this->Form->input('Patientinterne.0.frequence', array('label'=>'Fréquence ','type' => 'text','class'=>'form-control','placeholder'=>'Fréquence','required'=>true));
?>
</div>
<div class="col-lg-12 line-input">
<?php
echo $this->Form->input('Patientinterne.0.tension_arterielle', array('label'=>'Tension artérielle ','type' => 'text','class'=>'form-control','placeholder'=>'Tension artérielle','required'=>true));
?>
</div>
<div class="col-lg-12 line-input">
<?php
echo $this->Form->input('Patientinterne.0.type_priseencharge', array('label'=>'Type de prise en charge financière ','type' => 'text','class'=>'form-control','placeholder'=>'Type de prise en charge financière','required'=>true));
?>
</div>
<div class="col-lg-12 line-input">
<?php
echo $this->Form->input('Patientinterne.0.servicesorientations_id', array('label' => 'Service d\'orientation *','empty' => array('---Choisir le Service---'),'class'=>'form-control classcycle','options' => $listeservice));
?>
</div>
<div class="col-lg-12 line-input">
<?php
echo $this->Form->input('Patient.signe_symptome', array('label'=>'Signes et symptômes','type' => 'textarea','class'=>'form-control','placeholder'=>'Signes et symptômes'));
?>
</div>
<div class="col-lg-12 line-input">
<?php
echo $this->Form->input('Patient.observation', array('label'=>'Observation','type' => 'textarea','class'=>'form-control','placeholder'=>'Observations'));
?>
</div>
<div class="crlfix"></div>
<div class="col-lg-10 line-input">
<p class="form-validation" >
<?php
echo $this->Form->button(' Créer', array('type'=>'submit','class'=>'btn btn-primary btn-submit glyphicon glyphicon-ok'));
echo $this->Form->button(' Annuler', array('type'=>'reset','class'=>'btn btn-default btn-reset glyphicon glyphicon-refresh'));
echo $this->Form->end();
?>
</p>
</div>
</div>
</div>
<div class="panel-footer"></div>
</div>
c'est que dans mon controlleur PatientsControlleur que lorsque je fais ceci:
public function admin_addpatientinterne()
{
$this->layout = "page";
$this->loadModel('Servicesorientation');
$listeservice = $this->Servicesorientation->find('list',array(
'fields' => array('id', 'nom_service'),
'recursive' => -1
));
$this->set(compact('listeservice'));
if($this->request->is('post'))
{
$this->Patient->create();
$this->Patient->set($this->request->data);
$idpersonnel = $this->Auth->user('personnels_id');
if($this->Patient->Patientinterne->validates())
{
$this->request->data['Patient']['telephone'] = $this->request->data['Patient']['numphoneparain'];
$this->request->data['Patient']['formsanitaire_referer'] = 'Douala';
$this->request->data['Patient']['code-patient'] = 'Douala';
$this->request->data['Patient']['personnels_id'] = $idpersonnel;
debug($this->request->data);
if($this->Patient->saveAssociated($this->request->data, array('deep'=>true,'callbacks' =>true,'fieldList' =>array('cas_patologie','nom_patient','prenom_patient','sexe','age','statut_patient','identification_femme_enceinte','code_patient','profession','ville_patient','lieuderesidence','telephone','nom_parain','numphoneparain','reference_patient','formsanitaire_referer','signe_symptome','observation','personnels_id'))))
//if($this->Patient->saveAssociated($this->request->data, array('callbacks'=>true,'deep'=>true,'validate'=>true)))
{
$this->Session->setFlash('Patient sauvegarder avec success','default',array('class'=>'alert alert-success'));
return $this->redirect(array('admin' =>true,'Controller' => 'Personnels','action' => 'listethemestagiaire'));
}
else
{
debug($this->request->data);
$this->Session->setFlash('Erreur de sauvegarde, verifiez vos informations. veuillez entrer des données différentes','default',array('class'=>'alert alert-info'));
}
}
else
{
$this->Session->setFlash('Erreur de sauvegarde, verifier vos informations, elles présentent des érreurs de validation','default',array('class'=>'alert alert-warning'));
}
}
}
que cela puisse enregistrer dans ma base de donnée tous les informations en un seul coup
j'avoue c'est pas la première fois que j'utilise la fonction saveAssociated mais voici le resultat que je recoit:
Error: SQLSTATE[23000]: Integrity constraint violation: 1452 Cannot add or update a child row: a foreign key constraint fails (bdhopital
.patientinternes
, CONSTRAINT fk_patientinternes_servicesorientations1
FOREIGN KEY (servicesorientations_id
) REFERENCES servicesorientations
(id
) ON DELETE NO ACTION ON UPD)
SQL Query: INSERT INTO bdhopital
.patientinternes
(patients_id
, modified
, created
) VALUES (1, '2016-01-24 16:47:27', '2016-01-24 16:47:27')
Je ne sais pas ou se trouve l'erreur car j'ai respecter la structure de cake.
j'utilise cakephp 2.7
pardon quelqu'un sais ou se trouve l'erreur?
Oui , etrangement le problème a été résolu je ne sais pas comment mais j'étais obligé de changer de BD comme tu as dit au début le problème persistait mais arès tout allait bien
Bonjour à toi romses, j'ai obtenu le même problème que toi, je n'ai pas su corriger le problème.
MAIS !
J'ai fait une nouvelle base de donnée, et créé toutes mes tables, ensuite j'ai créé toutes mes colonnes avec les contraintes que je souhaitais puis ensuite j'ai commencé à insérer des données et ça à bien fonctionné :)