Domanda

Sto creando un sito Web in CakePHP e ne sono un po 'nuovo. Non sono riuscito a trovare buone risorse su questo argomento, quindi eccoti qui:

Ho una struttura a tre tabelle per la registrazione degli utenti: Users , Address e Contacts . Devo costruire una vista con le informazioni di tutte e tre le tabelle come:

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

Qual è il modo migliore per affrontare questa situazione. Specialmente per il salvataggio . Creazione di un nuovo modello per rappresentare questo, che avrà un metodo save () stesso (forse una vista sql nel database) Creare un controller per gestire questa vista che associa s o unbind s info

Mi chiedo ancora come gestirò entrambi i contatti in quanto saranno 2 diversi INSERT

Sarò contento di qualsiasi suggerimento o risorsa di cui possa scavare.

È stato utile?

Soluzione

Se stai usando l'ultimo codice 1.2, controlla Model :: saveAll in api

ad es. La tua vista potrebbe assomigliare a questa:

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');

Quindi nel tuo controller di aggiunta del metodo utente avresti qualcosa del tipo:

...

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');
}

...

Nel tuo modello utente avrai bisogno di qualcosa come:

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

Spero che ti aiuti!

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

Altri suggerimenti

CakePHP ti consente di mantenere facilmente il collegamento tra i tuoi modelli usando la relazione, vedi http://book.cakephp.org/view/78/Associations-Linking-Models-Together per i dettagli completi. Quindi, recuperando l'utente giusto, otterrai anche "gratuitamente" il suo indirizzo e le informazioni di contatto.

  

3 modelli: Utente, Indirizzo, Contatto

User hasOne Address, Contact
Address belongsTo User
Contact belongsTo User

nel tuo modello lo definisci così:

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

Per creare questa vista, devi ID_utente campo ind indirizzi e contatti tabelle

Per usarlo in una vista, è sufficiente chiamare una ricerca sul modello Utente con una ricorsiva di uno (e tra l'altro, il controller degli utenti utilizza solo il Modello utente).

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

Questo comporterà questo array per la tua vista:

array(
  'Use' => array(
     'id' => 666,
     'name' => 'Alexander'
),
  'Address' => array(
     'id' => 123,
     'zip' => 555
),
   'Contact' => array(
     'id' => 432,
     'phone' => '555-1515'
));
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top