Zend Db joinLeft具有参数化值

时间:2010-09-21 21:13:21

标签: zend-framework zend-db

我需要在Zend_Db ala中加入LEft:

$select->joinLeft(array('ATAG' => 'ad_tags'),
                  array('ADM.id = ATAG.ad_id AND ADM.site_id = ATAG.site_id AND ATAG.tag_id = ?', $input_vars['tag']),
                  array('tag_id'))
       ->order('ATAG.tag_id DESC')
       ->limit('1');

但是,我不能使用数组作为第二个参数,因为它只标记一个字符串;如何在不实际嵌入字符串的情况下传入值?

1 个答案:

答案 0 :(得分:1)

根据您的示例,您需要使用quoteInto(考虑到您在Zend_Db_Table中):

$select->joinLeft(array('ATAG' => 'ad_tags'),
                  'ADM.id = ATAG.ad_id AND ADM.site_id = ATAG.site_id AND ' . 
                  $this->getAdapter()->quoteInto('ATAG.tag_id = ?',$input_vars['tag']),
                  array('tag_id'))
       ->order('ATAG.tag_id DESC')
       ->limit('1');

你也可以这样做:

$select->from(array('ADM' => 'adm_table'),'*')
       ->joinLeft(array('ATAG' => 'ad_tags'), 'ADM.id = ATAG.ad_id', 'ATAG.tag_id')
       ->where('ADM.site_id =ATAG.site_id')
       ->where('ATAG.tag_id = ?',$input_vars['tag'])
       ->limit(1);

如果您在Zend_Db_Table中,则需要设置

$select->setIntegrityCheck(false);

(请注意,adm_table只是一个例子,因为你没有告诉我表名)