Я пытаюсь добавить новый запрос в свое приложение, и я немного застрял. Я также не знаю, что использовать в качестве поискового запроса, поэтому я застрял.
Ладно, давайте сейчас разберемся:
Table: a
primary key: id
string: name
Table: b
primary key: id
foreign key: a_id
int: cluster
То, что я хочу сделать, это получить максимальный кластер int для данного объекта a. В SQL:
SELECT MAX(b.cluster) FROM b WHERE b.a_id = ? GROUP BY b.cluster;
Поскольку я использую Symfony 1.4 и Doctrine 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, а не объекты. Может быть, кто-нибудь может указать, что является лучшей практикой для таких запросов.