我在 symfony 1.4.8 中使用学说 1.2。这是我的代码:
private function getWithMaxProductsQ($limit){
$query = Doctrine_Query::create()
->select('m.name, COUNT(p.manufacturer_id) AS c')
->from('manufacturer m')
->innerJoin('m.Product p')
->where('p.is_published = 1')
->addWhere('p.is_available = 1')
->groupBy('p.manufacturer_id')
->orderBy('c DESC')
->limit($limit);
//die($query->getSqlQuery());
return $query;
}
public function getManufacturersForCategoryDeep(Category $cat, $limit = 7){
$ids = $cat->getDescendantsAndMeIds();
$q = $this->getWithMaxProductsQ($limit);
$q->innerJoin('p.Category c')->whereIn('c.id', $ids);
die($q->getSqlQuery());
$mans = $q->execute();
return $mans;
}
正如您可能注意到的那样,die
里面有一个调用,getManufacturersForCategoryDeep
它为我提供了将执行哪些查询的信息。这是sql查询:
SELECT `m`.`id` AS `m__id`, `m`.`name` AS `m__name`, COUNT(`p`.`manufacturer_id`) AS `p__0` FROM `manufacturer` `m`
INNER JOIN `product` `p` ON `m`.`id` = `p`.`manufacturer_id`
INNER JOIN `category` `c` ON `p`.`category_id` = `c`.`id`
WHERE `m`.`id` IN ('49', '43', '127', '42', '65', '134', '113')
AND (`p`.`is_published` = 1
AND `p`.`is_available` = 1
AND `c`.`id` IN (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?))
GROUP BY `p`.`manufacturer_id` ORDER BY `p__0` DESC
而且我不知道为什么这条线出现在查询中WHERE m.id IN ('49', '43', '127', '42', '65', '134', '113')
我使用 apc 和 memcached 缓存进行 DQL 查询解析缓存,但是一个月前它被禁用了。那么我怎样才能找出这个查询发生了什么?
更新:此行在删除limit()
调用后消失
UPDATE2:这里是开放的错误http://www.doctrine-project.org/jira/browse/DC-1052?page=com.atlassian.streams.streams-jira-plugin:activity-stream-issue-tab