|
|
|
@ -7,7 +7,6 @@
|
|
|
|
|
|
|
|
|
|
namespace yii\redis; |
|
|
|
|
|
|
|
|
|
use yii\base\InvalidCallException; |
|
|
|
|
use yii\base\InvalidConfigException; |
|
|
|
|
use yii\base\NotSupportedException; |
|
|
|
|
use yii\db\TableSchema; |
|
|
|
@ -19,7 +18,7 @@ use yii\helpers\StringHelper;
|
|
|
|
|
* @author Carsten Brandt <mail@cebe.cc> |
|
|
|
|
* @since 2.0 |
|
|
|
|
*/ |
|
|
|
|
abstract class ActiveRecord extends \yii\db\ActiveRecord |
|
|
|
|
class ActiveRecord extends \yii\db\ActiveRecord |
|
|
|
|
{ |
|
|
|
|
/** |
|
|
|
|
* @var array cache for TableSchema instances |
|
|
|
@ -81,17 +80,19 @@ abstract class ActiveRecord extends \yii\db\ActiveRecord
|
|
|
|
|
} |
|
|
|
|
$newPk = static::buildKey($newPk); |
|
|
|
|
$newKey = static::tableName() . ':a:' . $newPk; |
|
|
|
|
$db->executeCommand('HMSET', $args); |
|
|
|
|
// rename index |
|
|
|
|
// rename index if pk changed |
|
|
|
|
if ($newPk != $pk) { |
|
|
|
|
// TODO make this atomic |
|
|
|
|
$db->executeCommand('MULTI'); |
|
|
|
|
$db->executeCommand('HMSET', $args); |
|
|
|
|
$db->executeCommand('LINSERT', array(static::tableName(), 'AFTER', $pk, $newPk)); |
|
|
|
|
$db->executeCommand('LREM', array(static::tableName(), 0, $pk)); |
|
|
|
|
$db->executeCommand('RENAME', array($key, $newKey)); |
|
|
|
|
$db->executeCommand('EXEC'); |
|
|
|
|
} else { |
|
|
|
|
$db->executeCommand('HMSET', $args); |
|
|
|
|
} |
|
|
|
|
$n++; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
return $n; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
@ -143,7 +144,9 @@ abstract class ActiveRecord extends \yii\db\ActiveRecord
|
|
|
|
|
{ |
|
|
|
|
$db = static::getDb(); |
|
|
|
|
$attributeKeys = array(); |
|
|
|
|
foreach(static::fetchPks($condition) as $pk) { |
|
|
|
|
$pks = static::fetchPks($condition); |
|
|
|
|
$db->executeCommand('MULTI'); |
|
|
|
|
foreach($pks as $pk) { |
|
|
|
|
$pk = static::buildKey($pk); |
|
|
|
|
$db->executeCommand('LREM', array(static::tableName(), 0, $pk)); |
|
|
|
|
$attributeKeys[] = static::tableName() . ':a:' . $pk; |
|
|
|
@ -151,7 +154,9 @@ abstract class ActiveRecord extends \yii\db\ActiveRecord
|
|
|
|
|
if (empty($attributeKeys)) { |
|
|
|
|
return 0; |
|
|
|
|
} |
|
|
|
|
return $db->executeCommand('DEL', $attributeKeys);// TODO make this atomic or document as NOT |
|
|
|
|
$db->executeCommand('DEL', $attributeKeys); |
|
|
|
|
$result = $db->executeCommand('EXEC'); |
|
|
|
|
return end($result); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
private static function fetchPks($condition) |
|
|
|
|