2012-12-10 20 views
12

私は、Zend Frameworkの2を使用して、このようなクエリを実行しようとしています:Zend Frameworkの2とSELECT COUNT(*)クエリ

SELECT count(*) as num FROM mytable 

ここで私は私のselect文を構築するために使用しているコードは(中ベアーズ心I)は、必要なクラスをインポートした:

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

結果のクエリは以下のとおりであるので、このコードは動作しません:

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

これは、COUNT(*)の周りに角括弧によって引き起こされる

Invalid column name 'count(*)' 

:...次のエラーをスローしています。基本的には、SQLで[count(*)]の代わりにcount(*)を持つように、これを正しく動作させるにはどうすればよいですか。また、私はあなたが通常のクエリでそれを行うことができることを知っていますが、私はこれをSelectオブジェクトで処理する必要があります。これまで私が知っていた限り、これは以前のバージョンのZendで動作していましたが、そのためのソリューションはたくさんありましたが、Zend Framework 2では何も見つかりませんでした。

答えて

39

誰かが別のフォーラムに参加してくれましたこのため。これはどのように行うのです:

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

はい、new \Zend\Db\Sql\Expression('COUNT(*)')せずに、ただCOUNT(*)は、次のエラー文へ導く:

SQLSTATE[42S22]: Column not found: 1054 Unknown column 'albs.COUNT(*)' in 'field list'

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

がそれを解決持ちます。

0

このコードを試してください。

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

return $this->num;