2011-12-17 2 views
1

に対応しています。動的SQLを使用して、特定の 行のみを私のEmployee Model Tableクラスから取得したいと思うATK4 DSQLのヘルプが必要です。 、WHQLここでは、SQL 'BETWEEN'と 'IN'のアジャイルツールキットATK4 DSQL

SELECT ID:

SQL IN '':

は、私はそれが何らかの形で「これらの構造のようになります ように私のWHERE文のBETWEEN SQLまたはIN句を生成することができますfnm、lnm、bp FROM 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 'BETWEEN':EMP FROM

SELECT ID、FNM、LNM、BP WHERE 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

DSQLの現行バージョンの更新:documentationからhttp://git.io/dsql

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

旧答え:アジャイルToolkitでの4.1までの*に非常に限られている "どこで"。表現。次のように書く必要があります:

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

ha!私は何かを短くて便利だと思った。 ' - >(sprintf( 'bp BETWEEN%d AND%d'、$ min、$ max));' –

+0

はSQLインジェクションの可能性を残している。 – romaninsh

関連する問題