Esempio n. 1
0
 /**
  * Создает пустое место в дереве заданной ширины
  * Место создается ВНУТРИ элемента с заданным 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);
 }
Esempio n. 2
0
 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();
 }