Doctrine_RawSql sorgularda toplam değerleri

3 Cevap php

Bu Doctrine_RawSql sorguda toplam değerleri kullanmak mümkün mü? İşte ben yapmaya çalışıyorum ne:

$q = new Doctrine_RawSql();
$q->select('{q.*}, AVG(a.value) AS avg');
$q->from('-- complex from clause');
$q->addComponent('q', 'Question');

Ancak, Doktrini tarafından oluşturulan SQL tablosundan sadece sütunları question bırakır ve toplam değeri atlar avg.

3 Cevap

Try putting the aggregate field in the SQL and then fetch it using curly brackets. I'm using SQL subquery.

$q = new Doctrine_RawSql();
$q->select('{s.*}, {s.avg} AS avg');
$q->from('(SELECT q.*, AVG(value) AS avg FROM Question AS q) AS s');
$q->addComponent('s', 'Question');

Bu benim için çalışıyor.

Ben daha önce Doctrine_RawSql hiç kullanmadım, ama ben bu iki yöntemden birini kullanarak Doktrini yoluyla ham SQL sorguları yapmış:

Doctrine_Manager::getInstance()->getCurrentConnection()->fetchAssoc("YOUR SQL QUERY HERE");

ve

$doctrine = Doctrine_Manager::getInstance()->getCurrentConnection()->getDbh();
$result = $doctrine->query('YOUR SQL QUERY HERE');

Bu iki yöntem bozulmadan orijinal SQL bırakacak gibi görünüyor.

Ben Symfony 1.4 uygulamaları kapsamında Doktrini 1.2 kullanıyorum dikkat etmelisiniz, ama AFAIK, bu ne olursa olsun kullanıyor olabilirsiniz başka hangi çerçeveler sizin için çalışmaya devam eder.

Eğer doctrine cookbook section on aggregates baktınız mı? Onlar varlık yöneticisi createQuery yöntemi yerine RawSql nesneleri kullanın.

Ben doktrini ile hiçbir uzman değilim, ama bu başlangıç ​​için iyi bir yer olabilir!