doctrine 1.2 の更新ステートメントでサブクエリを使用するのに多くの問題があります。サブクエリの結果にフィールドを設定したいのですが、それは不可能に思えます。これは私がソファーで試したものです。
$query = Doctrine_Query::create()->from('Users_Model_Book b');
$subSelect = $query->createSubquery()->select('ROUND(SUM(br.rating) / COUNT(br.id))')->from('b.BookRating')->where('b.BookRating.book_id = b.id');
$query->update()->set('bookrating', '('.$subSelect->getDql().')')->where('b.id = ?', $this->id)->getRawSql();
「不明なコンポーネント エイリアス br」が表示されます
$q = new Doctrine_RawSql();
$q ->addComponent('b', 'Users_Model_Book')
->addComponent('br', 'Users_Model_BookRating')
->update('b')
->set('b.bookrating', 'ROUND(SUM(br.rating) / COUNT(br.id)')
->where('b.id = ' . (bool) $this->id);
echo $q->getSqlQuery();
SELECT b.id AS b_id , br.id AS br _id FROM b WHERE b.id = 1を返します
私を助けることができる人はいますか?