1
我想添加一個新的查詢到我的應用程序,我卡住了一下。我也不知道如何使用搜索詞,所以我被卡住了。symfony/doctrine特殊查詢(MAX)與Doctrine_Query ::創建()
好吧,讓我們來看看它現在:
Table: a
primary key: id
string: name
Table: b
primary key: id
foreign key: a_id
int: cluster
我想要做的是檢索給定對象的最大集羣INT。在SQL:
SELECT MAX(b.cluster) FROM b WHERE b.a_id = ? GROUP BY b.cluster;
由於我使用的symfony 1.4和學說1.2,我想正確的加入到一個類的方法的名稱maxCluster()得到它:
class A extends BaseA{
..
public function maxCluster(){
$q = Doctrine_Query::create()->select('MAX(b.cluster)')->from('B b')->where('b.a_id = ?', $this->getId())->groupBy('b.cluster');
return Doctrine_Core::getTable('A')->execute($q);
}
}
做當這我得到以下錯誤信息:
A query with the name A/SELECT MAX(b.cluster) FROM B b WHERE b.a_id = ? GROUP BY b.cluster does not exist.
我認爲解決方案應該不是那麼複雜,我只是現在就卡住了。
感謝您的幫助, 塞巴斯蒂安
編輯:我有一個提示,所以知道maxCluster功能的代碼如下所示:
$q = Doctrine_Query::create()->select('MAX(b.cluster) AS maxCluster')->from('B b')->where('b.a_id = ?', $this->getId())->;
$result = $q->fetchOne();
return $result->maxCluster;
現在我的問題是:這是最好的方法嗎?我很困惑,fetchOne返回一個圖片數組。我不會期望這樣的行爲,因爲我選擇了一個int而不是對象。也許任何人都可以指出這種查詢的最佳實踐。
謝謝你的回答。請參閱我上面的編輯:它現在正在工作,但我不滿意它。 – Sgoettschkes
嘗試使用不同的水合模式:'返回$ q-> fetchOne(array(),Doctrine_Core :: HYDRATE_SINGLE_SCALAR)' –
非常感謝您的提示,我會盡力的! – Sgoettschkes