From 37862b6ee228c0af093fa01e0be89aeff0787c5f Mon Sep 17 00:00:00 2001 From: Paul Klimov Date: Fri, 15 Nov 2013 11:30:24 +0200 Subject: [PATCH] Unsupported "update counters" feature removed from Sphinx Active Record. --- extensions/sphinx/ActiveRecord.php | 58 ----------------------- tests/unit/extensions/sphinx/ActiveRecordTest.php | 23 --------- 2 files changed, 81 deletions(-) diff --git a/extensions/sphinx/ActiveRecord.php b/extensions/sphinx/ActiveRecord.php index 0f9122f..f821200 100644 --- a/extensions/sphinx/ActiveRecord.php +++ b/extensions/sphinx/ActiveRecord.php @@ -177,34 +177,6 @@ class ActiveRecord extends Model } /** - * Updates the whole table using the provided counter changes and conditions. - * For example, to increment all customers' age by 1, - * - * ~~~ - * Customer::updateAllCounters(['age' => 1]); - * ~~~ - * - * @param array $counters the counters to be updated (attribute name => increment value). - * Use negative values if you want to decrement the counters. - * @param string|array $condition the conditions that will be put in the WHERE part of the UPDATE SQL. - * Please refer to [[Query::where()]] on how to specify this parameter. - * @param array $params the parameters (name => value) to be bound to the query. - * Do not name the parameters as `:bp0`, `:bp1`, etc., because they are used internally by this method. - * @return integer the number of rows updated - */ - public static function updateAllCounters($counters, $condition = '', $params = []) - { - $n = 0; - foreach ($counters as $name => $value) { - $counters[$name] = new Expression("[[$name]]+:bp{$n}", [":bp{$n}" => $value]); - $n++; - } - $command = static::getDb()->createCommand(); - $command->update(static::indexName(), $counters, $condition, $params); - return $command->execute(); - } - - /** * Deletes rows in the table using the provided conditions. * WARNING: If you do not specify any condition, this method will delete ALL rows in the table. * @@ -813,36 +785,6 @@ class ActiveRecord extends Model } /** - * Updates one or several counter columns for the current AR object. - * Note that this method differs from [[updateAllCounters()]] in that it only - * saves counters for the current AR object. - * - * An example usage is as follows: - * - * ~~~ - * $post = Post::find($id); - * $post->updateCounters(['view_count' => 1]); - * ~~~ - * - * @param array $counters the counters to be updated (attribute name => increment value) - * Use negative values if you want to decrement the counters. - * @return boolean whether the saving is successful - * @see updateAllCounters() - */ - public function updateCounters($counters) - { - if ($this->updateAllCounters($counters, $this->getOldPrimaryKey(true)) > 0) { - foreach ($counters as $name => $value) { - $this->_attributes[$name] += $value; - $this->_oldAttributes[$name] = $this->_attributes[$name]; - } - return true; - } else { - return false; - } - } - - /** * Deletes the table row corresponding to this active record. * * This method performs the following steps in order: diff --git a/tests/unit/extensions/sphinx/ActiveRecordTest.php b/tests/unit/extensions/sphinx/ActiveRecordTest.php index 8d33e3e..fe15697 100644 --- a/tests/unit/extensions/sphinx/ActiveRecordTest.php +++ b/tests/unit/extensions/sphinx/ActiveRecordTest.php @@ -161,35 +161,12 @@ class ActiveRecordTest extends SphinxTestCase $record2 = RuntimeIndex::find(['id' => 2]); $this->assertEquals(9, $record2->type_id); - // updateCounters - /*$pk = ['id' => 1]; - $record = RuntimeIndex::find($pk); - $this->assertEquals(1, $record->quantity); - $ret = $record->updateCounters(['quantity' => -1]); - $this->assertTrue($ret); - $this->assertEquals(0, $record->quantity); - $record = RuntimeIndex::find($pk); - $this->assertEquals(0, $record->quantity);*/ - // updateAll $pk = ['id' => 2]; $ret = RuntimeIndex::updateAll(['type_id' => 55], $pk); $this->assertEquals(1, $ret); $record = RuntimeIndex::find($pk); $this->assertEquals(55, $record->type_id); - - // updateAllCounters - /*$pk = ['order_id' => 1, 'item_id' => 2]; - $record = RuntimeIndex::find($pk); - $this->assertEquals(2, $record->quantity); - $ret = RuntimeIndex::updateAllCounters([ - 'quantity' => 3, - 'subtotal' => -10, - ], $pk); - $this->assertEquals(1, $ret); - $record = RuntimeIndex::find($pk); - $this->assertEquals(5, $record->quantity); - $this->assertEquals(30, $record->subtotal);*/ } /**