Commit e11ec66b by NmDimas

add change to CHANGELOG,and mini refactoring

parent a047bf2c
...@@ -57,6 +57,7 @@ Yii Framework 2 Change Log ...@@ -57,6 +57,7 @@ Yii Framework 2 Change Log
- Enh: Added `all` option to `MigrateController::actionDown()` action (creocoder, umneeq) - Enh: Added `all` option to `MigrateController::actionDown()` action (creocoder, umneeq)
- Enh: Added support for array attributes in `exist` validator (creocoder) - Enh: Added support for array attributes in `exist` validator (creocoder)
- Enh: Added support for using path alias with `FileDependency::fileName` (qiangxue) - 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 #2913: RBAC `DbManager` is now initialized via migration (samdark)
- Chg #3036: Upgraded Twitter Bootstrap to 3.1.x (qiangxue) - Chg #3036: Upgraded Twitter Bootstrap to 3.1.x (qiangxue)
- Chg #3175: InvalidCallException, InvalidParamException, UnknownMethodException are now extended from SPL BadMethodCallException (samdark) - Chg #3175: InvalidCallException, InvalidParamException, UnknownMethodException are now extended from SPL BadMethodCallException (samdark)
......
...@@ -1294,21 +1294,20 @@ abstract class BaseActiveRecord extends Model implements ActiveRecordInterface ...@@ -1294,21 +1294,20 @@ abstract class BaseActiveRecord extends Model implements ActiveRecordInterface
public function unlinkAll($name) public function unlinkAll($name)
{ {
$relation = $this->getRelation($name); $relation = $this->getRelation($name);
if (!empty($relation->via)) { 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 {
throw new InvalidCallException('Unable to unlink relationship for the current model. This method is only for many to many relationships.'); 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