gpt4 book ai didi

zend-framework - 用 Zend_Db_Table_Abstract 对 WHERE 子句进行分组

转载 作者:行者123 更新时间:2023-12-03 07:56:52 25 4
gpt4 key购买 nike

有谁知道用 Zend_Db 对 where 子句进行分组的方法?基本上我有这个查询

$sql = $table->select()
->where('company_id = ?', $company_id)
->where('client_email = ?', $client_email)
->orWhere('client_email_alt = ?', $client_email);

这给了我这个:
SELECT `clients`.* FROM `clients` WHERE (company_id = '1') AND (client_email = 'email@address.com') OR (client_email_alt = 'email@address.com')

但我需要它给我这个,OR 语句被分组的地方:
SELECT `clients`.* FROM `clients` WHERE (company_id = '1') AND ((client_email = 'email@address.com') OR (client_email_alt = 'email@address.com'))

最佳答案

为了实现这一点,您必须在对 where 的一次调用中构造分组子句。方法。

如果两个条件值相同,您可以这样做:

$select->where('client_email = ? OR client_email_alt = ?', $client_email)

如果字符串中有多个占位符,则 DB 适配器的 quoteInto方法将用提供的值替换所有占位符。

如果您需要分组 OR每个字段都有不同的值,您必须手动引用这些值。它有点复杂:
$select->where(
$db->quoteInto('client_email = ?', $email1) . ' OR ' . $db->quoteInto('client_email_alt = ?', $email2)
); // $db is your instance of Zend_Db_Adapter_*
// You can get it from a Zend_Db_Table_Abstract
//subclass by calling its getAdapter() method

关于zend-framework - 用 Zend_Db_Table_Abstract 对 WHERE 子句进行分组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1179279/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com