Containable Behavior

Kategorie: CakePHP
Publikationsdatum: 29.06.2011
Nehmen wir an, es geht um das Modell der Unternehmen. Ein Unternehmen hat viele Beziehungen. Das Unternehmen gehört zu einer Kategorie und zu einem Land. Des weiteren hat ein Unternehmen viele Jobs. Jedes Unternehmen hat auch eine Unternehmensbeschreibung.
Werden nun all die Beziehungen im Modell gesetzt, erhält man bei einem find() relativ viele Datenbankabfragen und zu dem auch Informationen, welche man möglicherweise überhaupt nicht benötigt.
Mit Hilfe des Containable Behavior kann man nun Filter und Beschränkungen auf die find()-Operation anwenden.

Um das Verhalten von Containable Behavior zu nutzten, wird die Eigenschaft $actAs im Modell gesetzt:
PHP
  1. var $actsAs = array('Containable');
Diese Eigenschaft kann man auch im Controller mittels folgender Zeile setzten:
PHP
  1. $this->Company->Behaviors->attach('Containable');
Nun ein find()-Beispiel in dem Containable Behavior zur Filterung und Begrenzung genutzt wird. Es werden die Daten des Unternehmens sowie die Jobs ausgegeben. Bei den Jobs werden nur jene angezeigt, welche auch online sind. Außerdem werden sie nach Datum sortiert.
PHP
  1. $this->Company->find('all', array('contain' => array('Jobs' => array('conditions' => array('Jobs.online =' => '1'),
  2. 'order' => 'Jobs.created ASC'
  3. )
  4. )
  5. )
  6. );
Stichwörter: Containable Behavior, CakePHP
 
 
NACH OBEN