symfony 1.4.8에서 doctrine 1.2를 사용합니다. 여기 내 코드입니다 : doctrine 쿼리가 어떻게 빌드되었는지 정보를 얻는 방법
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;
}
당신이 날 실행됩니다 어떤 쿼리 정보를 제공 getManufacturersForCategoryDeep
내부 die
전화가 알다시피
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
그리고 나는이 줄을 내가 DQL 쿼리 구문 분석 캐싱 APC와 memcached를 캐싱을 사용하는 쿼리 WHERE m.id IN ('49', '43', '127', '42', '65', '134', '113')
에 나타나는 이유를 잘 모릅니다 있지만 한 달 전에 비활성화되었습니다 : 여기에 SQL 쿼리입니다. 그러면이 쿼리로 어떤 일이 일어나는지 알 수 있습니까?
UPDATE : 당신이 DQL 교리에서 쿼리에 limit()
를 추가 할 때 여기에 개방 버그 http://www.doctrine-project.org/jira/browse/DC-1052?page=com.atlassian.streams.streams-jira-plugin:activity-stream-issue-tab
doctrine은 두 개의 별도의 SQL 요청을한다는 의미입니까? 글쎄, 이상한 것보다 symfony 1.4 디버그 바는 당신이 언급 한 첫 번째 쿼리를 보여주지 못하기 때문에 – kirugan
조심스럽게 살펴 보라.) (적어도 나는 디버그 바에서 찾을 수있다). 그것을 기록하지 않는 Sf 1.4.8이 아니라면 말이다. 최신 1.4.20 버전으로 이동하십시오. –
내 버전은 1.4.10입니다. 답해 주셔서 감사합니다. – kirugan