我需要在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');
但是,我不能使用数组作为第二个参数,因为它只标记一个字符串;如何在不实际嵌入字符串的情况下传入值?
答案 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只是一个例子,因为你没有告诉我表名)