Empfehlungen: Erweiterte Suche

Verständnisproblem

Datenbankobjekte strukturieren und validieren

Verständnisproblem

Beitragvon havanna » Sa 18. Okt 2008, 00:03

Hallo zusammen,
wie an anderer Ecke gerade geschrieben arbeite ich mich gerade in CakePHP ein. Dabei bin ich auf ein seltsames Verhalten gestossen, das mir vielleicht jemand erklären kann.
Ich habe eine Tabelle immobilien und eine Tabelle anhaenge. Eine Immobilie kann n Anhaenge (Bilder) haben. Aus dem bisher gelesenen bin ich davon ausgegangen, das ich eine solche Beziehung mit hasMany bzw. belongsTo im Modell abbilde.
Dies also das Modell für die Tabelle immobilien:
Code: Alles auswählen
  class Immobilien extends AppModel {
 
    var $name       = 'Immobilien';
    var $useTable   = 'immobilien';
    var $primaryKey = 'objektnummer';

  var $hasMany = array(
    'Anhaenge' => array(
    'className' => 'Anhaenge',
    'foreignKey' => 'objektnummer'
    )
  );
}


und dies für die Tabelle anhaenge:
Code: Alles auswählen

  class Anhaenge extends AppModel {
 
    var $name       = 'Anhaenge';  
    var $useTable   = 'anhaenge';
    var $primaryKey = 'objektnummer';
   
    // setup the belongs to relationship
    var $belongsTo = array(
      'Immobilien'=>array(
            'className' => 'Immobilien',
      'foreignKey' => 'objektnummer',
      'depent' => true
      ),
      'Bestoffer'=>array(
            'className' => 'Bestoffer',
      'foreignKey' => 'objektnummer',
      'depent' => true
      )
    );
}
 


Wenn ich damit nun eine Abfrage mache und die Tabelle in der where-Klausel einbeziehe erhalte ich einen Fehler: SQL Error: 1054: Unknown column 'Anhaenge.pfad' in 'where clause'
Im Query wird auch das Modell Anhaenge nicht gezogen.

Natürlich habe ich im Controller über den Paramter $uses jeweils das andere Modell einbezogen.

Setze ich nun in beiden Modellen die Beziehung statt hasMany auf hasOne und im anderen von belongsTo auf hasOne funktioniert alles prima :o

Kann mir das jemand erklären? Welchen Einsatzbereich hat dann die Beziehung hasMany und belongsTo?

Ciao Thomas
Benutzeravatar
havanna
 
Beiträge: 191
Registriert: Mi 15. Okt 2008, 23:12
Wohnort: Bodman-Ludwigshafen
CakePHP-Version: 1.2.x
OS: WIN

Re: Verständnisproblem

Beitragvon euromark » Sa 18. Okt 2008, 01:17

also 2 dinge, die ich zumindest auf anhieb sehe

ein vollständiges (nicht notwendig!) hasMany sollte so ausschauen:
Code: Alles auswählen
var $hasMany = array(
            'UniEntry' => array('className' => 'UniEntry',
                                'foreignKey' => 'uni_field_id',
                                'dependent' => false,
                                'conditions' => '',
                                'fields' => '',
                                'order' => '',
                                'limit' => '',
                                'offset' => '',
                                'exclusive' => '',
                                'finderQuery' => '',
                                'counterQuery' => ''
            )
    );
 

und ein BelongsTO
Code: Alles auswählen
    'UniType' => array('className' => 'UniType',
                                'foreignKey' => 'uni_type_id',
                                'conditions' => '',
                                'fields' => array('id','title'),
                                'order' => ''
            ),

bin deshalb mir grad nich sicher, ob "depend" nicht "dependent" heißen müsste - bzw in deinem Fall in dem BelongsTo erst gar nich aufgelistet werden dürfte
davon abgesehen zu deinem Problem:

du musst das jeweils andere Model mit $uses NUR mit einbeziehen, wenn KEINE definierte beziehung zwischen beiden besteht (also du das Model Immobilien z.b. bei dem Controller Users brauchst etc)
ansonsten reichen die einfachen $hasMany bzw $belongsTo
euromark
 
Beiträge: 618
Registriert: Fr 27. Jun 2008, 22:17
Wohnort: München
CakePHP-Version: 2.1
OS: Windows

Re: Verständnisproblem

Beitragvon havanna » Sa 18. Okt 2008, 11:49

Hallo,

richtig, muss heißen "dependent". Doch auch wenn ich die Uses auskommentiere, die vollständige Deklaration nehme und die "belongsTo" Deklaration bereinige, kommt der gleiche Fehler.

Ciao Thomas
Benutzeravatar
havanna
 
Beiträge: 191
Registriert: Mi 15. Okt 2008, 23:12
Wohnort: Bodman-Ludwigshafen
CakePHP-Version: 1.2.x
OS: WIN


Zurück zu Models

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 1 Gast