Beispiel #1
0
 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;
 }
Beispiel #2
0
 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);
 }
Beispiel #3
0
 /**
  * Удаление узла дерева
  * В данном методе удаляются все его подузлы
  * @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;
 }