Empfehlungen: Erweiterte Suche

meherere Verweise auf einen Fremdschlüssel?

Datenbankobjekte strukturieren und validieren

meherere Verweise auf einen Fremdschlüssel?

Beitragvon mivogtLU » Mi 10. Feb 2010, 23:18

Hi,

wie kann ich mehrere Verweise auf einen Fremdschlüssel legen?
Konkret:
eine Tabelle FARBEN
ein Modell mit 3 Farbfeldern Farbe1, Farbe2, Farbe3.

Normal würde ich farbe_id nehmen aber das geht ja per Automatik wohl nur mit 1 Feld.
Was mache ich in meinem Fall wenn 3 Felder Werte aus der anderen Tabelle annehmen dürfen?
Ich will also 3 Dropdowns die jedes aus dem selben datenbestand gefüllt werden aber unterschiedliche Namen haben.

Model:
id
name
farbe1
farbe2
farbe3
created
modified


Anregungen?

CU

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: meherere Verweise auf einen Fremdschlüssel?

Beitragvon Luckie » Di 16. Feb 2010, 13:03

Genau das gleiche Problem habe ich jetzt auch: Zwei Felder, die ihre Daten aus einer gemeinsamen Tabelle beziehen.

Tabelle Waehrung
id
name
waehrung

Tabelle Kosten
id
name
herstellungskosten
herstellungskosten_waehrung_id (aus Tabelle Waehrung)
preis
preis_waehrung_id (aus Tabelle Waehrung)

Wichtig ist, dass es möglich ist alles automatisch mit den Scripten zu backen.
Luckie
 
Beiträge: 115
Registriert: Fr 22. Mai 2009, 12:16
OS: Windows XP

Re: meherere Verweise auf einen Fremdschlüssel?

Beitragvon dth33 » Di 16. Feb 2010, 15:36

Hi,

habt Ihr schonmal folgendes versucht (auf das Beispiel mit den Kosten bezogen):

Code: Alles auswählen

// Model Cost
var $belongsTo = array(
        'Herstellungskosten_Waehrung' => array(
            'className' => 'Waehrung',
            'foreignKey' => 'id',
            'conditions' => '',
            'fields' => '',
            'order' => ''
        ),
        'Preis_Waehrung' => array(
            'className' => 'Waehrung',
            'foreignKey' => 'id',
            'conditions' => '',
            'fields' => '',
            'order' => ''
        )
    );
 


Ist nur ein Vorschlag ohne das ich das selbst getestet habe..........Also bitte nicht steinigen, falls es nicht geht. :D

Grüße Steffen
dth33
 
Beiträge: 33
Registriert: Do 22. Jan 2009, 15:38
Wohnort: Am schönen Niederrhein
CakePHP-Version: 1.3
OS: Win32

Re: meherere Verweise auf einen Fremdschlüssel?

Beitragvon Luckie » Di 16. Feb 2010, 19:29

Ja, das ist natürlich eine Möglichkeit. Aber das Problem ist, dass so eine Lösung nicht zu gebrauchen ist, wenn alles automatisch gebacken werden soll. So eine Lösung muss man dann in die Buildscripte implementieren und das ist immer sehr unschön.
Luckie
 
Beiträge: 115
Registriert: Fr 22. Mai 2009, 12:16
OS: Windows XP

Re: meherere Verweise auf einen Fremdschlüssel?

Beitragvon dth33 » Di 16. Feb 2010, 19:51

Luckie hat geschrieben:Ja, das ist natürlich eine Möglichkeit. Aber das Problem ist, dass so eine Lösung nicht zu gebrauchen ist, wenn alles automatisch gebacken werden soll. So eine Lösung muss man dann in die Buildscripte implementieren und das ist immer sehr unschön.


Also sowas wird m.E. auch während des backens abgefragt. Einfach mal testen. Darüber hinaus sind ein paar Handgriffe nach dem Backen doch nichts was einen abschrecken sollte.

Grüße
dth33
 
Beiträge: 33
Registriert: Do 22. Jan 2009, 15:38
Wohnort: Am schönen Niederrhein
CakePHP-Version: 1.3
OS: Win32

Re: meherere Verweise auf einen Fremdschlüssel?

Beitragvon mivogtLU » Mi 17. Feb 2010, 09:00

Moin Leute,

ich habe ein Antwort zu dem Problem bekommen die ich hier gerne poste:
*-*-*-*-*
Ich habe in meinem Fall zwei Tabellen
Colors: id, Farbname
Mixtures: id, color1_id, color2_id, color3_id, ...
*-*-*-*-*-
okey, dann ist das mit den 3 spalten schon ok. dann brauchst ja nur im
model mixtures 3 belongsTo definieren.
also in etwa so:
var $belongsTo = array(
'Color1' => array('className' => 'Color', foreignKey' => 'color_id'),
'Color2' => array('className' => 'Color', foreignKey' => 'color2_id'),
'Color3' => array('className' => 'Color', foreignKey' => 'color3_id'),
);
und eben die tabellen wie du oben schon geschrieben hattest (nur etwas
an die namenskonventionen angepasst):
colors:
id int unsigned auto_increment,
name varchar 255,
modified datetime,
created datetime

mixtures:
id int unsigned auto_increment,
color_id int unsigned,
color2_id int unsigned,
color2_id int unsigned,
modified datetime,
created datetime



*-*-*-*-
evtl. noch erwähnenwert:
cake bake meckert dann irgendwann (Controller?) darüber dass keine Tabelle für color1..color3 gefunden wird.
Man kann dann entweder manuell Angaben machen im Dialog von bake (cake1.3ß) oder aber man passt im Modell das man erzeugt hat schnell den Class Eintrag an (statt color1 eben color)


Gruß

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


Zurück zu Models

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 0 Gäste

cron