2016-06-10 8 views
2

Ich arbeite gerade an einem Projekt mit CakePHP und seiner find() Methode, Datenbankabfragen zu behandeln.CakePHP - Modelle aus JOIN ausschließen in find() Methode

Meine aktuelle Situation ist wie folgt:

Ich habe 3 Modelle: User, Location und Order. Die Verbindung ist das User hasOne Location und User hasMany Orders.

Wenn ich die find() -Methode verwende, um den Benutzer und die Adresse (gespeichert im Standortmodell) zu erhalten, gibt CakePHP den Benutzer, den Standort und die Auftragsmodelle zurück. In meinem Fall brauche ich die Bestellinformationen nicht.

Also meine Frage ist: Ist es möglich, CakePHP zu sagen, nicht mit dem Bestellmodell beizutreten?

Ich weiß über das recursive Attribut, aber wenn ich es auf -1 setzen, gibt CakePHP nur das Benutzermodell zurück und im Fall von rekursive> = 0 gibt es alle 3 Modelle zurück.

Antwort

2

Gelöstes Problem mit Containable von CakePHP. Der Code ist wie folgt:

$this->User->Behaviors->load('Containable'); 

$this->User->recursive = -1; 
$this->paginate = array('fields' => array('User.*'), 
         'contain' => array('Location'=>array('field1', 'field2') 
         ); 

$user = $this->Paginator->paginate('User'); 
+0

Die Originalversion dieser Code sollte in der Frage sein. Bravo für die Lösung und Beantwortung Ihrer eigenen Frage, +1. (Bitte korrigieren Sie Ihr Leerzeichen, es war einfacher zu lesen, bevor Sie es zuletzt bearbeitet haben). – AD7six

1

Sie unbind Modellfunktion können gewünschte Modelle

In Ihrem Fall auszuschließen:

$this->User->unbindModel(array('hasMany' => 'Orders')); 

Für gemeinsame

$this->User->unbindModel(
      array(
       'hasMany' => array('Model1','Model2'), 
       'hasOne' => array('Model1','Model2'), 
       'belongsTo' => array('Model1','Model2'), 
       ) 
     );