/** * Создает пустое место в дереве заданной ширины * Место создается ВНУТРИ элемента с заданным rgt как ПОСЛЕДНИЙ его потомок * @param \T4\Dbal\Connection $connection * @param string $table * @param int $rgt * @param int $width */ protected function expandTreeBeforeRgt(Connection $connection, $table, $rgt, $width) { $query = new QueryBuilder(); $query->update()->table($table)->values(['__lft' => 'CASE WHEN __lft>=:rgt THEN __lft + (:width + 1) ELSE __lft END', '__rgt' => 'CASE WHEN __rgt>=:rgt THEN __rgt + (:width + 1) ELSE __rgt END'])->where('__lft>=:rgt OR __rgt>=:rgt')->order('__lft DESC'); $query->params([':rgt' => $rgt, ':width' => $width]); $connection->execute($query); }
public function insert(Connection $connection, $tableName, array $data) { $sql = 'INSERT INTO ' . $this->quoteName($tableName) . ''; $sql .= ' ("' . implode('", "', array_keys($data)) . '")'; $sql .= ' VALUES'; $values = []; foreach ($data as $key => $val) { $values[':' . $key] = $val; } $sql .= ' (' . implode(', ', array_keys($values)) . ')'; $connection->execute($sql, $values); return $connection->lastInsertId(); }