Создание запроса к базе данных с использованием dsql - PullRequest
3 голосов
/ 21 сентября 2011

Можно ли сделать запрос, используя любой из методов dsql ()?

что-то вроде:

$dq=$this->api->db->dsql()->execute('insert into table xx (field1,field2) values ('a','b')');

Спасибо

Ответы [ 2 ]

3 голосов
/ 21 сентября 2011

DSQL теперь реорганизован как отдельная библиотека: https://git.io/dsql

$this->api->db->dsql()->table('table')->set('field1','a')->set('field2','b')->do_insert();

Естественно, вы также можете использовать

$this->api->db->dsql()->table('table')->set($associative_array)->do_insert();
1 голос
/ 14 октября 2011

Римляне уже показали пример вкладыша.Вы можете выбрать массив данных, подобный этому (обратите внимание, что debug () является необязательным и будет выводить результирующий оператор sql в верхней части страницы)

   $db=$this->api->db->dsql()->table('table1 x')
             ->field('x.col1')
         ->field('sum(x.col2) col2') 
  //         ->debug()
         ->join('table2 y','x.id=y.some_id')
         ->where('x.col3','Y')
         ->where('x.col4',$this->auth->api->get('id'))
         ->group('x.col2')
                     ->order('x.col1')
         ->do_getAll();

, а затем перебирать результирующий набор, чтобы что-то сделать

   foreach ($db as $row) {
      if (is_array($row)) {
         //do something here with row['col1'], row['col2']            
      }
    }

просто выберите одно значение

   $db=$this->api->db->dsql()->table('table1 x')
             ->field('x.col1')
         ->where('x.col2,'constant')
         ->do_getOne();

Вы можете обновить записи

           $this->api->db->dsql()->table('table1 x')
             ->where('id',$somevariable)
             ->set('col1',$somevalue)
             ->debug()
             ->do_update();

и удалить записи

            $this->api->db->dsql()->table('table1 x')
             ->where('id',$somevariable)
             ->do_delete();

Где возможно,Лучше всего использовать модели, подобные приведенным ниже, для сохранения ваших данных, но хорошая вещь в ATK4 заключается в том, что он не мешает, поэтому, если вам нужно, вы можете выполнить SQL в любом месте вашей страницы, чтобы достичь простого результата.

       $s=$p->add('Model_Story')->loadData($story);
       $s->set('points', $value);
       $s->update();
...