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()メソッドは、既存のfromまたはjoin に列を追加するためのものです。クエリを作成する正しい方法は次のとおりです。

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

必要な列を from() メソッドの 2 番目のパラメーターとして指定する必要があります。列が 1 つだけの場合は文字列として、複数の列の場合は配列として指定する必要があります。からZend_Db_Select docs:

from() メソッドの 2 番目の引数では、それぞれのテーブルから選択する列を指定できます。列を指定しない場合、デフォルトは「すべての列」の SQL ワイルドカードである「*」です。

列は、文字列の単純な配列でリストするか、列エイリアスから列名への連想マッピングとしてリストできます。クエリする列が 1 つしかなく、列のエイリアスを指定する必要がない場合は、配列ではなくプレーンな文字列としてリストできます。

于 2009-06-21T12:30:12.597 に答える
4

選択オブジェクトが既にある場合 (from()以前に呼び出されたことを意味します)、例のように使用$select->reset(Zend_Db_Select::COLUMNS);してから呼び出すcolumns()必要があります。

于 2009-06-21T22:16:53.687 に答える