Zend Db joinLeft 带有参数化值

发布于 2024-09-24 13:04:00 字数 389 浏览 7 评论 0原文

我需要在 Zend_Db ala 中 joinLeft:

$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');

但是,我不能使用数组作为第二个参数,因为它只标记一个字符串;如何传递该值,而不将其实际嵌入到字符串中?

I need to joinLeft within Zend_Db ala:

$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');

However, I can't use an array as the second parameter, because it only tags a string; how can I pass in the value, without actually embedding it in the string?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

葬シ愛 2024-10-01 13:04:00

根据您的示例,您需要使用 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 只是一个示例,因为您没有告诉我表名称)

Based on your example you need to use quoteInto (considering you're in 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');

You can also do the same with:

$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);

If you're in Zend_Db_Table you need to set

$select->setIntegrityCheck(false);

(Note that adm_table is just an example, since you did not tell me the table name)

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文