0

Doctrineは常にクエリにID列を含めます。次に例を示します。

 $new_fees = Doctrine::getTable('Stats')->createQuery('s')
  ->select('s.sid')->where('s.uid = ?', $this->uid)
  ->andWhere('s.operation = ?', PPOperationType::FEE_PAID_BY_REFERRED_OWNER)
  ->andWhere('s.created_at > ?', $lastwd)
  ->groupBy('s.sid')->execute();

s.idが含まれているため(私は教義を求めていませんでした)、機能しません。そのid列を削除するにはどうすればよいですか?ここで生のSQLを使用しなければならないことは、教義の有用性を損ないます。

4

2 に答える 2

2

doctrineがデフォルトのプライマリをidとして使用しないように、そのテーブルの一部の列をsetTableDefinitionのプライマリとして設定する必要があります。あなたが実際の主キーであるとしましょう。

    public function setTableDefinition(){
    ....
    $this->hasColumn('sid', 'decimal', 2, array(
                 'type' => 'decimal',
                 'length' => 2,
                 'unsigned' => 0,
                 'primary' => true,
                 'default' => '0',
                 'notnull' => true,
                 'autoincrement' => false,
                 ));
    }

に注意してください'primary' => true。これにより、Doctrineがデフォルトの主キーとしてidを使用できなくなります(テーブル定義ファイルで定義されていない場合でも)。

于 2012-04-27T17:23:05.550 に答える
1

これは最も美しい解決策ではありませんが、Doctrine_QueryでisSubquery(true)を呼び出して、主キー(この場合はs.id)を削除できます。

http://www.doctrine-project.org/api/orm/1.2/doctrine/doctrine_query.html#isSubquery()

于 2011-02-11T22:59:01.673 に答える