/** * レコードオブジェクトを取得する * * 条件にマッチしたレコードオブジェクトのリストを取得する * 条件は次のように定義する<br> * $conditions = <br> * [ <br> * 'where' => [ <br> * 'field' => 'age', <br> * 'comparision' => '>', <br> * 'value' => 20 <br> * ],<br> * 'limit' => 5, <br> * 'offset' => 2, <br> * 'order' => 'id DESC'<br> * ]; <br> * * レコードクラスにアソシエーションが定義されていた場合<br> * AssociationCollectionによって関連レコードオブジェクトがアタッチされる<br> * * @param array $conditions 引数を省略した場合すべてのレコードオブジェクトのリストが取得される * @return array レコードオブジェクトのリスト */ public static function find($conditions = []) { $strategy = self::inheritanceType(); $result = $strategy->find(static::className(), $conditions); $resultSet = []; foreach ($result as $rowData) { $hydrate = static::className(); if (isset($rowData['type'])) { list($namespace, $class) = Util::namespaceSplit($hydrate); $hydrate = $namespace . '\\' . $rowData['type']; } $record = IdentityMap::get($hydrate, $rowData[static::$primaryKey]); if ($record === false) { $record = self::hydrate($rowData, $hydrate); IdentityMap::set($hydrate, $record->id, $record); } AssociationCollection::attach($record, $hydrate::$associations); $resultSet[] = $record; } return $resultSet; }
public function save($record) { $className = get_class($record); list($namespace, $class) = Util::namespaceSplit($className); if (empty($record->type)) { $record->type = $class; } if (!class_exists($className)) { throw new \Exception('missing type ' . $className); } if ($record->isNew()) { $this->operator->insert($record); $success = $this->updateParent($record); } else { $success = $this->updateParent($record); } return $success; }