public static function delete(ActiveRecord $Record) { $modelName = $Record->getModel()->name; $primaryKey = $Record->getPrimaryKey(); $pool =& self::$_pool; unset($pool[$modelName][$primaryKey]); }
public function __construct($name, ActiveRecord $Record, $type, $definition, $record, $checkRecord) { $this->_AssociationStrategy = ActiveRecordAssociationType::create($type, $this); $this->_name = $name; $this->_Association = new ActiveRecordAssociationCollection($this); $this->_Record = $Record; $this->_type = $type; $this->_Model = $Record->getModel()->{$name}; $this->_definition = $definition; $this->_associated = array(); if (isset($record[$name])) { $this->_initializeWithRecord($record[$name], $checkRecord); } }
public function associatedRecords(ActiveRecord $Record) { $record = $Record->getRecord(); $Model = $Record->getModel(); $RelatedRecord = false; // If the association has no condition, try first to find it in the pool if ($this->_Association->getDefinition('conditions')) { $RelatedRecord = ActiveRecordManager::findActiveRecordInPoolWithSecondaryKey($this->_Association->getModel(), $this->_Association->getDefinition('foreignKey'), $record[$Model->primaryKey]); } if ($RelatedRecord !== false) { return array($RelatedRecord); } if (!$Model->Behaviors->attached('Containable')) { $Model->Behaviors->load('Containable'); } $result = $Model->find('first', array('conditions' => array($Model->alias . '.' . $Model->primaryKey => $record[$Model->primaryKey]), 'contain' => array($this->_Association->getName()), 'activeRecord' => false)); if (!empty($result[$this->_Association->getName()][$this->_Association->getPrimaryKey()])) { $RelatedRecord = ActiveRecordManager::getActiveRecord($this->_Association->getModel(), $result[$this->_Association->getName()]); } else { $RelatedRecord = null; } return array($RelatedRecord); }
public function associatedRecords(ActiveRecord $Record) { $referenceRecord = $Record->getRecord(); $referenceModel = $Record->getModel(); $relatedRecords = array(); if (isset($referenceRecord[$referenceModel->primaryKey])) { if (!$referenceModel->Behaviors->attached('Containable')) { $referenceModel->Behaviors->load('Containable'); } // We can never be sure that all records are stored in the pool. So we must query them. $result = $referenceModel->find('first', array('conditions' => array($referenceModel->alias . '.' . $referenceModel->primaryKey => $referenceRecord[$referenceModel->primaryKey]), 'contain' => array($this->_Association->getName()), 'activeRecord' => false)); if (!$result) { return $relatedRecords; } foreach ($result[$this->_Association->getName()] as $relatedRecord) { $relatedRecords[] = ActiveRecordManager::getActiveRecord($this->_Association->getModel(), $relatedRecord); } } return $relatedRecords; }