Commit e11ec66b by NmDimas

add change to CHANGELOG,and mini refactoring

parent a047bf2c
......@@ -57,6 +57,7 @@ Yii Framework 2 Change Log
- Enh: Added `all` option to `MigrateController::actionDown()` action (creocoder, umneeq)
- Enh: Added support for array attributes in `exist` validator (creocoder)
- Enh: Added support for using path alias with `FileDependency::fileName` (qiangxue)
- Enh: Added Unlink all relationship in current model (nmdimas)
- Chg #2913: RBAC `DbManager` is now initialized via migration (samdark)
- Chg #3036: Upgraded Twitter Bootstrap to 3.1.x (qiangxue)
- Chg #3175: InvalidCallException, InvalidParamException, UnknownMethodException are now extended from SPL BadMethodCallException (samdark)
......
......@@ -1294,21 +1294,20 @@ abstract class BaseActiveRecord extends Model implements ActiveRecordInterface
public function unlinkAll($name)
{
$relation = $this->getRelation($name);
if (!empty($relation->via)) {
$viaTable = $viaTable = reset($relation->via->from);
/** @var ActiveQuery $viaRelation */
$viaRelation = $relation->via;
$columns = [];
/** @var $viaClass ActiveRecordInterface */
foreach ($viaRelation->link as $a => $b) {
$columns[$a] = $this->$b;
}
/** @var Command $command */
$command = static::getDb()->createCommand();
$command->delete($viaTable, $columns)->execute();
} else {
if (empty($relation->via)) {
throw new InvalidCallException('Unable to unlink relationship for the current model. This method is only for many to many relationships.');
}
$viaTable = $viaTable = reset($relation->via->from);
/** @var ActiveQuery $viaRelation */
$viaRelation = $relation->via;
$columns = [];
/** @var $viaClass ActiveRecordInterface */
foreach ($viaRelation->link as $a => $b) {
$columns[$a] = $this->$b;
}
/** @var Command $command */
$command = static::getDb()->createCommand();
$command->delete($viaTable, $columns)->execute();
}
/**
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment