2

MySqlクエリの結果行をカウントする必要があります。TableGatewayここでクラスをクラスに拡張しました。これが私のコードです。

public function get_num_of_rows(){
    $sql = 'SELECT count(q_no) FROM questions';

    //code ????????????????
    $result = $this->select();

    return $result;
}

では、どのように実行しSELECT count(q_no) FROM questionsますか?

4

4 に答える 4

10

テーブルに膨大な数のレコードがある場合、使用するとメモリ不足エラーが発生する可能性があります

$result->count(); 

代わりにこれを使用すると、同じことを避けることができます

$select->from('TABLE_NAME')->columns(array('COUNT'=>new \Zend\Db\Sql\Expression('COUNT(*)')));
于 2014-01-05T18:30:33.660 に答える
5

独自の SQL クエリを記述する必要はありません。$this->select() を実行すると、Zend\Db\ResultSet\ResultSet のインスタンスが取得されます。ResultSet にはメソッド数があります。

$result = $this->select();
return $result->count(); 

'options' => array('buffer_results' => true)ただし、DB アダプターに追加することを忘れないでください。

アップデート:

それは私が今までどこかに書いた中で最もばかげたことです。リソースから必要なデータのみを常に返します。ここでは、1 つのスカラーのみが必要です。したがって、https://stackoverflow.com/a/13810175/1353837は正しいです。

于 2012-11-27T13:23:45.933 に答える
0

ZF-2 の場合は、次のサンプル コードを試してください。

 <?php
//var/www/html/zend_app/module/Api/src/Api/Model/ApiTable.php
namespace Api\Model;

use Zend\Db\TableGateway\AbstractTableGateway;
use Zend\Db\Adapter\Adapter;
use Zend\Db\ResultSet\ResultSet;
use Zend\Db\Sql\Select;
use Zend\Db\Sql\Sql;
use Zend\Db\Sql\Where;
use Zend\Db\Sql\Expression;

class ApiTable extends AbstractTableGateway {



    public function __construct(Adapter $adapter) {
        $this->adapter = $adapter;
        $this->resultSetPrototype = new ResultSet();
        $this->resultSetPrototype->setArrayObjectPrototype(new Api());
        $this->initialize();
    }




    public function countTableData($from, $whereData = NULL) {
        $sql = new Sql($this->adapter);

        $select = $sql->select();
        $select->from($from);

        if($whereData)
        {
            $select->where($whereData);
        }
        $statement = $sql->prepareStatementForSqlObject($select);
        $results = $statement->execute();
        $resultSet = new ResultSet;
        $resultSet->initialize($results);
        $resultSet->buffer();
        return $resultSet->count();

    }


}

HTH。

于 2016-05-10T06:24:56.363 に答える