public function testingMultiPkModelWithStringPk() { $whereClauses = array('id1 = \'Harmen\'' => array('id1' => 'Harmen'), 'id1 = "frits van der plof" AND id2 = "Harmen Janssen"' => array('id1' => 'frits van der plof', 'id2' => 'Harmen Janssen'), 'id2 = "abc"' => array('id2' => 'abc')); foreach ($whereClauses as $whereClause => $result) { $pkExtractor = new Garp_Db_PrimaryKeyExtractor('multi', array('id1', 'id2'), $whereClause); $this->assertEquals($pkExtractor->extract(), $result); } }
public function afterDelete(&$args) { $model = $args[0]; $where = $args[2]; $pkExtractor = new Garp_Db_PrimaryKeyExtractor($model, $where); $matches = $pkExtractor->extract(); if (!array_key_exists('id', $matches)) { throw new Exception(self::ERROR_NO_EXTRACTABLE_ID); } $dbId = $matches['id']; $elasticModel = $this->_getElasticModel($model); $elasticModel->delete($dbId); }
/** * Retrieve primary keys of affected records * * @param Garp_Model_Db $model * @param String $where * @return Array */ protected function _getPrimaryKeysOfAffectedRows(Garp_Model_Db $model, $where) { if ($draftableObserver = $model->getObserver('Draftable')) { // Unregister so it doesn't screw up the upcoming fetch call $model->unregisterObserver($draftableObserver); } $pkExtractor = new Garp_Db_PrimaryKeyExtractor($model, $where); $pks = $pkExtractor->extract(); if (count($pks)) { return array($pks); } $rows = $model->fetchAll($where); $pks = array(); foreach ($rows as $row) { if (!$row->isConnected()) { $row->setTable($model); } $pks[] = (array) $row->getPrimaryKey(); } if ($draftableObserver) { $model->registerObserver($draftableObserver); } return $pks; }