Hmm, jetzt habe ich ziemlich viel herumgespielt, aber ich sehe keine halbwegs gut funktionierende Lösung :(
Ich habe (mal stark vereinfacht) drei Tables: Adressen: CREATE TABLE IF NOT EXISTS `addresses` ( `id` int(10) unsigned NOT NULL auto_increment, `street` varchar(45) collate utf8_unicode_ci NOT NULL, `city` varchar(45) collate utf8_unicode_ci NOT NULL, `zipcode` varchar(45) collate utf8_unicode_ci default NULL, `street_nr` varchar(45) collate utf8_unicode_ci default NULL, `country` varchar(45) collate utf8_unicode_ci NOT NULL, `additional_address_line` varchar(45) collate utf8_unicode_ci default NULL, `title` varchar(45) collate utf8_unicode_ci default NULL, `gender` varchar(45) collate utf8_unicode_ci default NULL, `personnel_id` int(10) unsigned default NULL, `client_id` int(10) unsigned default NULL, `customer_id` int(10) unsigned default NULL, `distributor_id` int(10) unsigned default NULL, `stock_id` int(10) unsigned default NULL, `created` datetime default NULL, `modified` datetime default NULL, PRIMARY KEY (`id`), KEY `fk_addresses_personnels` (`personnel_id`), KEY `fk_addresses_clients` (`client_id`), KEY `fk_addresses_customers` (`customer_id`), KEY `fk_addresses_distributors` (`distributor_id`), KEY `fk_addresses_stocks` (`stock_id`) ) Kunden: CREATE TABLE IF NOT EXISTS `customers` ( `id` int(10) unsigned NOT NULL auto_increment, `business_type_id` int(10) unsigned default NULL, `subsidiary_id` int(10) unsigned default NULL, `created` datetime default NULL, `modified` datetime default NULL, PRIMARY KEY (`id`), KEY `fk_customers_business_types` (`business_type_id`), KEY `fk_customers_subsidiaries` (`subsidiary_id`) ) Transaktionen (Rechnung, Auftragsbestätigung usw.): CREATE TABLE IF NOT EXISTS `customer_transactions` ( `id` int(10) unsigned NOT NULL auto_increment, `created` datetime default NULL, `modified` datetime default NULL, `customer_id` int(11) unsigned default NULL, `customer_transaction_type_id` int(11) unsigned default NULL, PRIMARY KEY (`id`), KEY `fk_customer_transactions_customers` (`customer_id`), KEY `fk_customer_transactions_customer_transaction_types` (`customer_transaction_type_id`) ) Die Beziehungen, die hier relevant sind, sind also: customers hasMany addresses customers hasMany customer_transactions addresses belongsTo customers customer_transactions belongsTo customers Die gebackene CRUD Funktionalität von Cake geht dann so: 1. füge neue Adresse hinzu 2. füge neuen Kunden hinzu und setze die Verbindung 3. füge neue Transaktion hinzu und setze die Verbindung. Ein Warenwirtschaftssystem sollte aber wesentlich einfacher funktionieren: 1. füge neue Transaktion & Kunde & Adresse hinzu und setze die Verbindungen. Ich muß also in einem Formular Daten aus drei verschiedenen Tables anzeigen, anlegen und verändern können. die saveAll() Funktion speichert mir ja die Daten, die aus dem Formular kommen. Allerdings "verstößt" das Formular krass gegen die DRY (Don't repeat yourself) Regel, weil ich ja für die views der Transaktion alle Formularteile aus den Views von Kunde und Adresse herauskopieren muß. Oder jedes kleine Formular als Element kapseln und mit vielen If klauseln vollstopfen, damit es unter allen umständen richtig funktioniert, was dann gegen die "loose couple" Regel verstoßen würde. Also ist der CakePHP Weg wirklich das man seine Views in Elemente bzw. Helper zerlegt und sie von da aus benutzt, oder übersehe ich irgendetwas? Nochmal in kürzer: Ich würde gerne "schlaue" Formulare (Views) bauen, die mir bei einem Auswahlfeld (z.B. Welcher Kunde gehört zu dieser Transaktion) auch anbieten einen neuen Kunden anzulegen, der dann natürlich ins Transaktionsformular übernommen wird. Geht das einfach? Wenn ja: wie? --~--~---------~--~----~------------~-------~--~----~ Bitte bei Fragen immer auch die aktuell verwendete cakePHP Version angeben und wenn möglich auch das verwendete Betriebssystem und die PHP Version. Danke. Sie erhalten diese Nachricht, weil Sie Mitglied sind von Google Groups-Gruppe "CakePHP-de für deutsche CakePHP Entwickler". Für das Erstellen von Beiträgen in dieser Gruppe senden Sie eine E-Mail an [email protected] Um sich von dieser Gruppe abzumelden, senden Sie eine E-Mail an [EMAIL PROTECTED] Weitere Optionen finden Sie in dieser Gruppe unter http://groups.google.com/group/cakephp-de?hl=de -~----------~----~----~----~------~----~------~--~---
