在Doctrine 1.2中使用子查询

时间:2012-07-20 12:00:56

标签: doctrine subquery doctrine-1.2

我在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

任何可以帮助我的人?​​

0 个答案:

没有答案