1

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

有人可以帮助我吗?

4

0 回答 0