不使用列,并选择一切

时间:2009-06-21 12:28:25

标签: php zend-framework zend-db

我有以下代码

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

任何帮助?

2 个答案:

答案 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()