ГДЕ Эквиваленты для SQL 'МЕЖДУ' и 'IN' в Agile Toolkit ATK4 DSQL - PullRequest
1 голос
/ 17 декабря 2011

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

могу ли я сгенерировать SQL BETWEEN или предложение IN вмое утверждение WHERE такое, что оно «как-то» будет выглядеть следующим образом:

SQL 'IN' :

SELECT id, fnm, lnm, bp FROMemp WHERE id IN (1,3,5,7,9,11);

$model=$this->add('Model_Employee');
$set=array(1,3,5,7,9,11);
$list=$mode->dsql()
   ->field('id')
   ->field('fnm') // first name
   ->field('lnm') // last name
   ->field('bp') // basic pay
   ->where('id in (%l)',$set) // only 1,3,5,7,9 & 11
   ->do_getAll();

SQL 'МЕЖДУ' :

ВЫБЕРИТЕ id, fnm, lnm, bp ОТ emp, где bp между 3000 и 5000;

$model=$this->add('Model_Employee');
$min=3000;$max=5000;
$range=$mode->dsql()
   ->field('id')
   ->field('fnm') // first name
   ->field('lnm') // last name
   ->field('bp') // basic pay
   ->where('bp between %i and %i',$min,$max)
   ->do_getAll();

спасибо!

1 Ответ

1 голос
/ 17 декабря 2011

Обновлено для текущей версии DSQL : http://git.io/dsql

Из документации :

$query -> where('time', $query->expr(
    'between [] and []',
    [$from, $to]
));

Старый ответ:в Agile Toolkit до 4.1. * «где» очень ограничено выражениями.Вам нужно написать это так:

->where('bp between '.
    $this->api->db->escape($min).' and '.
    $this->api->db->escape($max));
...