7

我有以下代码

$result = $handle->select()->from('store_details')
                               ->where('store_details.store_id=?', $id)
                               ->columns('store_details.store_name');
                               //->query(ZEND_DB::FETCH_OBJ);

但是,当我运行它时,会选择整行,而不仅仅是我想要的列。这是 __toString 的输出

SELECT `store_details`.*, `store_details`.`store_name` 
FROM `store_details` WHERE (store_details.store_id=8)

有什么帮助吗?

4

2 回答 2

10

columns()方法用于列添加到现有的fromjoin。构建查询的正确方法是:

$result = $handle->select()->from('store_details','store_details.store_name')->where('store_details.store_id=?', $id);

您需要将所需的列指定为 from() 方法的第二个参数,如果它只是一列,则指定为字符串,或者指定为多列的数组。来自Zend_Db_Select docs

在 from() 方法的第二个参数中,您可以指定要从相应表中选择的列。如果不指定列,则默认为“*”,即“所有列”的 SQL 通配符。

您可以在一个简单的字符串数组中列出列,或者作为列别名到列名的关联映射。如果您只有一列要查询,并且不需要指定列别名,则可以将其列为纯字符串而不是数组。

于 2009-06-21T12:30:12.597 回答
4

如果您已经有了 select 对象(意味着from()之前调用过),您应该像在示例中那样使用$select->reset(Zend_Db_Select::COLUMNS);然后调用。columns()

于 2009-06-21T22:16:53.687 回答