1

我在 ATK4 DSQL 中需要帮助,我想使用动态 SQL 从我的 Employee Model Table 类中只检索一组特定的行。

我可以在我的 WHERE 语句中生成一个 SQL BETWEEN 或一个 IN 子句,使其“以某种方式”看起来像这些结构:

SQL “输入”

选择 id,fnm,lnm,bp 从 emp 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 “之间”

从 emp 中选择 id、fnm、lnm、bp,其中 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();

谢谢!

4

1 回答 1

1

针对当前版本的 DSQL 更新:http: //git.io/dsql

文档中:

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

旧答案:在 Agile Toolkit 中,最高 4.1.* “where”仅限于表达式。你需要这样写:

->where('bp between '.
    $this->api->db->escape($min).' and '.
    $this->api->db->escape($max));
于 2011-12-17T11:38:02.770 回答