【发布时间】:2025-12-06 03:25:01
【问题描述】:
我正在尝试向我的应用程序添加一个新查询,但我有点卡住了。我也不知道用什么作为搜索词,所以我被卡住了。
好的,我们现在开始吧:
Table: a
primary key: id
string: name
Table: b
primary key: id
foreign key: a_id
int: cluster
我想要做的是检索给定对象 a 的最大集群 int。在 SQL 中:
SELECT MAX(b.cluster) FROM b WHERE b.a_id = ? GROUP BY b.cluster;
当我使用 symfony 1.4 和教义 1.2 时,我想通过向 Class a 添加一个名为 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 而不是对象。也许任何人都可以指出此类查询的最佳实践是什么。
【问题讨论】:
标签: symfony1 doctrine symfony-1.4 doctrine-1.2