Model aus 2 Datenbanktabellen?

Datenbankobjekte strukturieren und validieren

Model aus 2 Datenbanktabellen?

Beitragvon mivogtLU am Di 12. Jan 2010, 21:34

Hallo,

ich arbiete mich gerade in cakephp ein und habe eine kleine Frage hierzu.
Getreu dem alten lehrsatz alles was Datenbanken sind brav zu splitten so weit es nur geht habe ich mir u.a. zwei Tabellen erstellt:
- Kunden
Code: Alles auswählen

CREATE  TABLE IF NOT EXISTS `mydb`.`customers` (
  `id` INT NOT NULL AUTO_INCREMENT ,
  `Firma` VARCHAR(45) NULL ,
  `Anrede` VARCHAR(45) NULL ,
  `Vorname` VARCHAR(45) NULL ,
  `Strasse` VARCHAR(45) NULL ,
  `PLZ` VARCHAR(45) NULL ,
  `Ort` VARCHAR(45) NULL ,
  `Land` VARCHAR(45) NULL ,
  `Telefon` VARCHAR(45) NULL ,
  `Fax` VARCHAR(45) NULL ,
  `Mobil` VARCHAR(45) NULL ,
  `Email` VARCHAR(45) NULL ,
  PRIMARY KEY (`id`) )
ENGINE = InnoDB;
 



- Anfragen
Code: Alles auswählen

CREATE  TABLE IF NOT EXISTS `mydb`.`requests` (
  `id` INT NOT NULL AUTO_INCREMENT ,
  `customer_id` INT NULL ,
   .... anfrage felder mit ensprechenden datentypen...
)
ENGINE = InnoDB;
 


(Wie) kann ich ein Eingabeformular/View erstellen in dem ein Anwender sowohl seine Kundendaten (Name Adresse etc) eingibt als auch seine Anfrage in die jeweils dafür vorgesehenen inputfelder zum jeweiligen Model...?

Alternativ:
(wie) kann ich beide Masken sinnvoll hintereinander schalten ?
Also Kunde_create view öffnen, Kunde legt sich an (mal ohne den Fall dass es ihn schon gibt)
Dann Anfrage_create view öffnen und intern das Feld id des zuvor angelegten Kunden mit "ausfüllen" lassen..?

Alles was mir dazu durch den kopf geistert wäre es manuell in einem versteckten Feld zu machen wofür ich dann aber zB in der Session (so es denn eine gibt) die erstellte ID des Kunden zu parken und dann in ein verstecktes Feld des neuen views zu übermitteln - so würde ich es ohne cakephp versuchen.

Soweit ich glaube cakephp zu begreifen (als Anfänger..) müsstees doch gehen dass ich das Formular manuell mit allen Feldern baue die ich haben will - also Layout und view etc und dann über den Controller neu nachverteile... wäre das Ansatz oder nicht?

Gibt es dafür eine elegantere Methode bzw ein konkretes Beispiel?

Danke vorab und Grüße

Michael
mivogtLU
 
Beiträge: 46
Registriert: Di 12. Jan 2010, 21:22
Wohnort: 67059
CakePHP-Version: 1.3 final
OS: Linux, Win XP-Vista

Re: Model aus 2 Datenbanktabellen?

Beitragvon mbrod am Di 12. Jan 2010, 23:11

Das Thema klingt erst mal verwirrend: Model aus 2 Tabellen?
Soweit ich cakephp verstanden habe, ist ein Model das PHP-Objekt einer Datenbanktabelle. Aus deinen Angaben entnehme ich auch 2 Models: Customer und Request. Diese stehen in Beziehung: Customer has many Requests und Request belongs to Customer.
Am einfachsten ist es, wenn Du alle Dateien mit der Shell: cake bake erstellen lässt.
Dann kannst Du die views von requests/add und customers/add mit copy und paste zu einem kombinierten view zusammenfassen z.B customers/combi. Im customers_controller in der Funktion combi dann erst den neuen Customer erstellen (save) und danach die gerade erzeugte ID mit
Code: Alles auswählen
$customer_id=$this->Customer->id
auslesen und damit den Request erstellen.
Das mal so rasch als prinzipiell mögliche Vorgehensweise. Gegebenenfalls muss man bei der Verarbeitung der Request-Formulardaten am array $this->data im Controller noch etwas rumschrauben.
mbrod
 
Beiträge: 103
Registriert: Mi 20. Mai 2009, 18:09
Wohnort: Frankfurt am Main
CakePHP-Version: 1.3.2
OS: Mac OS X


Zurück zu Models

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 1 Gast

cron