7

まず第一に、それが私がやろうとしていることです:

ライブラリ内のクラスの 1 つで、検索結果の合計行数をカウントしたいと考えています。このクラスは、検索結果のアペンダント モデルによって設定された選択オブジェクトを使用します。私の問題は、この select() が from() によって要求された列を既に設定していることですが、単純に行をカウントするには、ID を選択したいだけです。ライブラリで使用しており、変数が保護されているため、オブジェクトの値を単純に変更することはできません。残念ながら、Zend には mySql count コマンドの機能がなく、静的な mySql コードを使用したくありません。将来データベース システムを切り替える可能性があるからです。

ここに私の質問があります:

Zend_Select によって、選択した列を変更する方法はありますか?

4

4 に答える 4

17

これを試して:

$select->reset(Zend_Db_Select::COLUMNS)
       ->from('thetable', 'COUNT(*)');

「thetable」を正しいテーブル名に置き換えます。

于 2012-08-08T12:32:43.880 に答える
1

これはプロジェクトからのものであり、テストされていませんが、これらのいずれかが機能するはずです。

$select->from(array("table_name" => "table_name"), array("my_col" => "COUNT(id)"));

また

$select->from(array("table_name"), array("my_col" => "COUNT(id)"));

これは

SELECT COUNT(id) as my_col FROM table_name 

それが役立つことを願っています

ジェイク

于 2012-08-08T10:34:30.040 に答える
-1

select で mysql コマンドを使用するには、Zend_Db_Expr を使用する必要があります。

$select = $this->select()
            ->from('myTable', new Zend_Db_Expr('COUNT(id) as count'));
echo $select; //SELECT COUNT(id) as count FROM myTable;
于 2012-08-08T11:05:50.230 に答える