13

ZendFramework2を使用してこのようなクエリを実行しようとしています。

SELECT count(*) as num FROM mytable

selectステートメントを作成するために使用しているコードは次のとおりです(必要なクラスをインポートしたことを覚えておいてください)。

$select = new Select();
$select->from('mytable')
       ->columns(array('num'=>'count(*)'), false);

結果のクエリは次のとおりであるため、このコードは機能しません。

SELECT [count(*)] AS [num] FROM [mytable]

...これは次のエラーをスローします:

Invalid column name 'count(*)'

これは、count(*)を囲む角かっこが原因です。これを正しく機能させるにはどうすればよいですか。基本的に、SQLで[count(*)]の代わりにcount(*)を使用します。また、通常のクエリだけで実行できることは知っていますが、Selectオブジェクトを操作するにはこれが必要です。私の知る限り、これは以前のバージョンのZendで機能していました。私はそれらのソリューションをたくさん見てきましたが、ZendFramework2では何もありませんでした。

4

3 に答える 3

44

別のフォーラムの誰かが親切にも私にこれに対する答えをくれました。これがその方法です。

$select->columns(array('num' => new \Zend\Db\Sql\Expression('COUNT(*)')));
于 2012-12-10T22:13:23.167 に答える
4

はい、なしのnew \Zend\Db\Sql\Expression('COUNT(*)')場合COUNT(*)、次のエラーステートメントが表示されます。

SQLSTATE [42S22]:列が見つかりません:1054不明な列'albs.COUNT(*)' in'field list'

持っている

new \Zend\Db\Sql\Expression('COUNT(*)')

それを解決しました。

于 2012-12-18T15:57:08.947 に答える
0

このコードを試していただけますか?

$this->num = $select->columns(array('num' => new \Zend\Db\Sql\Expression('COUNT(*)')));

return $this->num;
于 2015-06-03T01:12:07.037 に答える