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