Question

Je crée un site Web dans CakePHP et je suis un peu nouveau sur ce site. Je ne pouvais pas trouver de bonnes ressources sur ce sujet, alors voilà:

J'ai une structure à trois tables pour enregistrer les utilisateurs: Utilisateurs , Adresses et Contacts . Je dois construire une vue avec des informations sur les trois tables, comme:

Full Name:         [          ] (from Users)
Shipping Address:  [          ] (from Address)
Mobile Phone:      [          ] (from Contact)
e-Mail Address:    [          ] (from Contact)

Quel est le meilleur moyen de faire face à cette situation? Spécialement pour la sauvegarde . Créer un nouveau modèle pour représenter cela, qui aura une méthode save () elle-même (peut-être une vue sql dans la base de données) Créez un contrôleur pour gérer cette vue que bind s ou dissocier les informations de

Je me demande toujours comment je vais gérer les deux contacts, car ils seront deux INSERT différents

Tout indice ou toute ressource que je pourrais approfondir me fera plaisir.

Était-ce utile?

La solution

Si vous utilisez le dernier code 1.2, consultez Model :: saveAll dans l’API

par exemple. Votre vue pourrait ressembler à quelque chose comme ceci:

echo $form->create('User', array('action' => 'add');
echo $form->input('User.name');
echo $form->input('Address.line_1');
echo $form->input('Contact.tel');
echo $form->end('Save');

Ensuite, dans votre méthode d'ajout de contrôleur d'utilisateurs, vous obtiendrez quelque chose comme:

...

if($this->User->saveAll($this->data)) {
 $this->Session->setFlash('Save Successful');
 $this->redirect(array('action' => 'index'));
} else {
 $this->Session->setFlash('Please review the form for errors');
}

...

Dans votre modèle d'utilisateur, vous aurez besoin de quelque chose comme:

var $hasOne = array('Address', 'Contact');

J'espère que ça aide!

http://api.cakephp.org/class_model.html#49f

Autres conseils

CakePHP vous permet de maintenir facilement le lien entre vos modèles à l’aide de relations, voir http://book.cakephp.org/view/78/Associations-Linking-Models-Together pour plus de détails. Ensuite, si vous récupérez le bon utilisateur, vous obtiendrez également "gratuitement" son adresse et ses coordonnées.

  

3 modèles: utilisateur, adresse, contact

User hasOne Address, Contact
Address belongsTo User
Contact belongsTo User

dans votre modèle, vous définissez ceci comme ceci:

class User extends AppModel {
var $name = 'User';
var $hasOne = array('Address','Contact');
..

Pour créer cette vue, vous avez besoin des ID utilisateur et des adresses de champ , ainsi que des tables de contacts

.

Pour l'utiliser dans une vue, il vous suffit d'appeler une recherche sur le modèle utilisateur avec une valeur récursive égale à un (et d'ailleurs, le contrôleur d'utilisateurs utilise uniquement le modèle utilisateur).

$this->User->recursive = 1;
$this->set('user', $this->User->find('first', array('conditions'=>array('id'=>666)));

Cela entraînera l'affichage de ce tableau pour votre vue:

array(
  'Use' => array(
     'id' => 666,
     'name' => 'Alexander'
),
  'Address' => array(
     'id' => 123,
     'zip' => 555
),
   'Contact' => array(
     'id' => 432,
     'phone' => '555-1515'
));
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top