-
-
Notifications
You must be signed in to change notification settings - Fork 184
Open
Labels
help wantedstatus:to be verifiedNeeds to be reproduced and validated.Needs to be reproduced and validated.
Description
What steps will reproduce the problem?
add Data
change primaryKey
deleteAll()
What's expected?
Expected the find()->all() is empty
but,calling find()->all() the data is still
What do you get instead?
Refactoring deleteAll()
\yii\redis\LuaScriptBuilder
/**
* @param string $modelClass className
* @param mixed $condition
* @return int
*/
public function delete($modelClass, $condition)
{
$columns = [];
if ($condition !== null) {
$condition = $this->buildCondition($condition, $columns);
} else {
$condition = 'true';
}
$key = $this->quoteValue($modelClass::keyPrefix());
$recordKey = $this->quoteValue($modelClass::keyPrefix() . ':a:');
return <<<EOF
local allpks=redis.call('LRANGE',$key,0,-1)
local count=0
for k,pk in ipairs(allpks) do
if $condition then
redis.call('LREM', $key, 0, pk)
count=count+redis.call('DEL', $recordKey .. pk)
end
end
return count
EOF;
}\yii\redis\ActiveRecord
/**
* 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.
*
* For example, to delete all customers whose status is 3:
*
* ~~~
* Customer::deleteAll(['status' => 3]);
* ~~~
*
* @param array $condition the conditions that will be put in the WHERE part of the DELETE SQL.
* Please refer to [[ActiveQuery::where()]] on how to specify this parameter.
* @return int the number of rows deleted
*/
public static function deleteAll($condition = null)
{
$db = static::getDb();
$script = $db->getLuaScriptBuilder()->delete(static::class, $condition);
return $db->executeCommand('EVAL', [$script, 0]);
}Additional info
| Q | A |
|---|---|
| Yii vesion | 2.0.40 |
| PHP version | 8.0.1 |
| Operating system | docker |
Metadata
Metadata
Assignees
Labels
help wantedstatus:to be verifiedNeeds to be reproduced and validated.Needs to be reproduced and validated.