public function afterDelete(Model &$model) { $class = get_class($model); $relations = $class::getRelations(); foreach ($relations as $name => $relation) { switch ($relation['type']) { case Model::MANY_TO_MANY: $linkTable = $class::getRelationLinkName($relation); $query = new QueryBuilder(); $query->delete()->table($linkTable)->where($class::getManyToManyThisLinkColumnName() . '=:id'); $query->params([':id' => $model->getPk()]); $class::getDbConnection()->execute($query); } } return true; }
protected function delete(Migration $migration) { $query = new QueryBuilder(); if ($this->app->db->default->getDriverName() == 'mysql') { $column = '`time`'; } else { $column = '"time"'; } $query->delete(self::TABLE_NAME)->where($column . '=:time')->params([':time' => $migration->getTimestamp()]); $this->app->db->default->execute($query); }
/** * Удаление узла дерева * В данном методе удаляются все его подузлы * @param \T4\Orm\Model $model * @return bool */ public function afterDelete(Model &$model) { /** @var \T4\Orm\Model $class */ $class = get_class($model); $tableName = $class::getTableName(); /** @var \T4\Dbal\Connection $connection */ $connection = $class::getDbConnection(); $query = new QueryBuilder(); $query->delete()->table($tableName)->where('__lft>:lft AND __rgt<:rgt'); $query->params([':lft' => $model->__lft, ':rgt' => $model->__rgt]); $connection->execute($query); $this->removeFromTreeByLftRgt($connection, $tableName, $model->__lft, $model->__rgt); $model->__lft = 0; $model->__rgt = 0; $model->__lvl = 0; $model->__prt = 0; }