我在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
任何可以帮助我的人?