zend-framework - 多重/嵌套 "select where"与 Zend_Db_Select

标签 zend-framework mysql zend-db zend-db-select

<分区>

Possible Duplicate:
Grouping WHERE clauses with Zend_Db_Table_Abstract

我需要创建这样的东西:

select name from table where active = 1 AND (name LIKE 'bla' OR description LIKE 'bla')

第一部分很简单:

$sqlcmd = $db->select()
->from("table", "name")
->where("active = ?", 1)

现在是棘手的部分。我怎样才能嵌套?我知道我可以写

->orWhere("name LIKE ? OR description LIKE ?", "bla")

但那是错误的,因为我需要动态更改所有部分。查询将在脚本运行时一直构建。有些部分被删除,有些被改变。在此示例中,我需要添加这些 OR-s,因为有时我需要进行更广泛的搜索。 “我的Zend Logic”告诉我正确的做法是这样的:

$sqlcmd = $db->select()
->from("table", "name")
->where("active = ?", 1)
->where(array(
    $db->select->where("name LIKE ?", "bla"),
    $db->select->orWhere("description LIKE ?", "bla")
))

但这不起作用(至少我不记得它起作用了)。

。有人能帮我找到一种面向对象的方式来嵌套"where"-s

最佳答案

这是 ZF 手册中的示例

  // Build this query:
  //   SELECT product_id, product_name, price
  //   FROM "products"
  //   WHERE (price < 100.00 OR price > 500.00)
  //     AND (product_name = 'Apple')

  $minimumPrice = 100;
  $maximumPrice = 500;
  $prod = 'Apple';

  $select = $db->select()
               ->from('products',
                      array('product_id', 'product_name', 'price'))
               ->where("price < $minimumPrice OR price > $maximumPrice")
               ->where('product_name = ?', $prod);

它应该符合你的需要

关于zend-framework - 多重/嵌套 "select where"与 Zend_Db_Select,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2795344/

相关文章:

mysql - 在 zend 中使用动态数据更新查询?

zend-framework - 使用 zend-decorator 将表格列中的 Zend_Form_Element_Radio 格式化为行中的其他 Zend 表单元素

zend-framework - Zend 框架 : Render multiple Views in one Layout

php - 如何从表中选择一堆随机行?

php - 尝试在 mysql 中更新/插入 20k 记录,但它的工作速度非常慢,有什么建议吗?

mysql - mysql触发器定义中的if语句

php - 如何使用 Zend Framework2 修复此查询

php - ZendFramework 2.0.0beta4 服务管理器配置-子键区别

php - 带有 phpSettings.display_errors 的 zend 模块特定 ini

mysql - 是否可以将我的本地 MYSQL 数据库拉/推到 heroku postgresql 数据库?