Frage

ich eine Website in CakePHP bin die Schaffung und ich bin ein bisschen neu auf sich. Ich konnte nicht gut Ressourcen zu diesem Thema finden, so dass Sie gehen:

Ich habe eine drei Tabellenstruktur für die Registrierung Benutzer: Users, Addresses und Contacts. Ich habe eine Ansicht mit Informationen aller drei Tabellen bauen wie:

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

Was ist der beste Weg, um mit dieser Situation umgehen. Speziell für das Speichern . dass eine save() Methode selbst (vielleicht eine SQL-Ansicht in der Datenbank) hat ein neues Modell anlegen, dies zu repräsentieren, einen Controller erstellen mit dieser Ansicht umgehen, dass binds oder unbinds info

ich noch fragen, wie ich beide Kontakte behandelt, da sie zwei unterschiedliche INSERT der sein

Jeder Hinweis oder Ressourcen, die ich von mir graben kann, wird froh sein.

War es hilfreich?

Lösung

Wenn Sie den neuesten 1.2-Code, Check-out Modell :: SaveAll im api

zB. Ihre Ansicht könnte wie folgt aussehen:

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

Dann in Ihrer Benutzer-Controller add-Methode würden Sie so etwas wie haben:

...

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

...

In Ihrem User-Modell müssen Sie so etwas wie:

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

Ich hoffe, das hilft!

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

Andere Tipps

CakePHP Sie leicht unterhalten Verbindung zwischen Ihren Modellen Beziehung ermöglicht, finden Sie unter http://book.cakephp.org/view/78/Associations-Linking-Models-Together für das komplette Detail. Dann retreiving die richtigen Benutzer, werden Sie auch bekommen „kostenlos“, seine Adresse und Kontaktinformationen.

  

3 Modelle: User, Adresse, Kontakt

User hasOne Address, Contact
Address belongsTo User
Contact belongsTo User

in Ihrem Modell definieren Sie diese wie folgt aus:

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

Um diese Ansicht zu machen, müssen Sie User_id ind Adressen und Kontakte Tabellen

Um dies in einer Ansicht zu verwenden, rufen Sie einfach eine Suche auf dem User-Modell mit einer rekursiven von einem (und btw, die Benutzer-Controller verwenden nur User-Modell).

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

Das in diesem Array für Ihre Ansicht zur Folge haben wird:

array(
  'Use' => array(
     'id' => 666,
     'name' => 'Alexander'
),
  'Address' => array(
     'id' => 123,
     'zip' => 555
),
   'Contact' => array(
     'id' => 432,
     'phone' => '555-1515'
));
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top