我有以下代码
$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)
任何帮助?
答案 0 :(得分:10)
columns()
方法用于将列添加到现有的来自或加入。构建查询的正确方法是:
$result = $handle->select()->from('store_details','store_details.store_name')->where('store_details.store_id=?', $id);
您需要将所需的列指定为from()方法的第二个参数,如果它只是一个列,则指定为字符串,或者指定为多个列的数组。来自Zend_Db_Select docs
:
在from()的第二个参数中 方法,您可以指定列 从相应的表中选择。如果 你没有指定列,默认是 “*”,“所有的SQL通配符” 列”。
您可以简单地列出列 字符串数组,或作为关联 列别名到列的映射 名称。如果你只有一列 查询,您不需要指定 列别名,您可以将其列为 普通字符串而不是数组。
答案 1 :(得分:4)
如果您已有select对象(表示之前已调用from()
),则应使用$select->reset(Zend_Db_Select::COLUMNS);
,然后像示例中那样调用columns()
。