2

symfony doctrine で次のクエリを実行したい。

SELECT p.id AS id FROM skiChaletPrice p WHERE ski_chalet_id = ? AND month = ?

私は教義の質問を次のように書きました。

 $q = Doctrine_Query::create()
                ->select('p.id AS id')
                ->from('skiChaletPrice p')
                ->andWhere('ski_chalet_id = ?', $chaletId)
                ->andWhere('month = ?', $from);      

 $result = $q->fetchOne();
 if ($result->count() > 0) {            
     return $result->toArray();
 } else {
     return null;
 }   

しかし、私の結果には常にテーブル内のすべての列が含まれます。問題は何ですか?私を助けてください。

4

2 に答える 2

3

問題はfetchOne()、テーブル内のすべての列を暗黙的に含む Doctrine オブジェクトを返すことです。 $result->toArray()その教義オブジェクトを配列に変換しているため、すべての列を取得できます。

列のサブセットのみが必要な場合は、オブジェクトを水和せず、代わりに次のようにします。

$q = Doctrine_Query::create()
            ->select('p.id AS id')
            ->from('skiChaletPrice p')
            ->andWhere('ski_chalet_id = ?', $chaletId)
            ->andWhere('month = ?', $from);  

$results = $q->execute(array(), Doctrine::HYDRATE_SCALAR);

http://docs.doctrine-project.org/projects/doctrine1/en/latest/en/manual/data-hydrators.htmlを参照してください。

于 2013-04-19T09:59:55.510 に答える