4

ランダムな zend_db_select オブジェクトがあるとします。

そのオブジェクトに対してカウントを実行するにはどうすればよいですか。これにより、クエリを満たすアイテムの量がわかります。

私は次のことを試しました:

$data->TotalRecords = $select->columns(new Zend_Db_Expr('COUNT(*)'))->query()->fetch();

しかし、これにより次のエラーが発生します。

メッセージ: FROM 句にテーブルが指定されていません

クエリ自体は正常に機能し、結果セットを返します。

4

5 に答える 5

11

Zend_Db_Select でフェッチする列を指定するには、いくつかの方法があります。次の 2 つの製品は同じ SQL

$select = $db->select()
             ->from('myTable', array())
             ->columns(array('TotalRecords' => new Zend_Db_Expr('COUNT(*)')));

$select = $db->select()
             ->from('myTable', array('TotalRecords' => new Zend_Db_Expr('COUNT(*)')));

from メソッドは、最初の引数であるテーブル名と、2 番目の引数であるフェッチする列の配列を取ります。式を使用している場合は、'key' => Expr を指定できます。

Zend_Db_Select を SQL 文字列に変換してデバッグしたり、他の関数で使用したりするのは非常に簡単です。

echo $select; // prints SELECT COUNT(*) AS `TotalRecords` FROM `myTable`

これは、Zend_Db fetch メソッドによって自動的に呼び出される toString メソッドを使用します。

$total = $db->fetchOne($select); 

echo $total; //prints the number of rows matching the query

$db は Zend_Db のインスタンスです。

于 2010-10-11T10:11:04.443 に答える
1

メソッドを使用$select->__toString()して、生成されたクエリを出力し、何が問題なのかを確認します。

クエリに from 句がない場合はFrom()、select オブジェクトにメソッドを追加します。

于 2010-10-10T16:32:09.150 に答える
1

Zend_Db_Select を使用する場合は、 from メソッドを呼び出してテーブル名を設定する必要があります。Zend_Db_ Table _Select を使用すると、テーブルがコンストラクターに渡されるため、from を呼び出す必要はありません。

于 2010-10-11T07:21:30.150 に答える
0
$select = $db->select();

$select->from(
    'table_name',
    array('cnt' => 'count(1)')
);
于 2011-10-20T14:25:41.870 に答える
0

同じ問題に遭遇したばかりで、何が問題なのかがわかりました

関数は、オブジェクトまたは文字列の代わりに配列を期待しZend_Db_Select::columnsます(最初のパラメーターが文字列またはオブジェクトの場合、これを指定した列のメインテーブルとして使用する可能性がありますが、それについてはわかりません)。

コードを次のように変更する

$data->TotalRecords = $select->columns(array(new Zend_Db_Expr('COUNT(*)')))->query()->fetch();

問題を解決します

于 2013-10-07T15:28:28.157 に答える