2012-09-11 2 views
1

Это следить за этим вопрос: count number of foreign keysподсчет количество внешнего ключа в доктрине

Я использую доктрину 1.2, и я хочу, чтобы подсчитать количество бизнеса, который принадлежит к подкатегории.

Ниже приведены таблицы mysql.

1. fi_category

+----+-----------------+-----------------+ 
| id | name   | slug   | 
+----+-----------------+-----------------+ 

2. fi_subcategory

+----+-----------------+-----------------+-------------+ 
| id | name   | slug   | category_id | 
+----+-----------------+-----------------+-------------+ 

3. fi_business_subcategory

+----+-------------+----------------+ 
| id | business_id | subcategory_id | 
+----+-------------+----------------+ 

Я использую этот DQL.

$q = Doctrine_Query::create() 
    ->select('c.name, c.slug, sc.name, sc.slug') 
    ->from('Model_Category c') 
    ->leftJoin('c.Subcategory sc') 
    ->leftJoin('sc.BusinessSubcategory bsc'); 

, который дает мне что-то вроде этого.

Array 
(
    [0] => Array 
    (
     [id] => 1 
     [name] => Entertainment & Lifestyle 
     [slug] => entertainment-lifestyle 
     [Subcategory] => Array 
     (
      [0] => Array 
      (
       [id] => 1 
       [name] => Arts and Crafts 
       [slug] => arts-and-crafts 
      ) 
      [1] => Array 
      (
       [id] => 2 
       [name] => Family 
       [slug] => family 
      ) 
      [2] => Array 
      (
       [id] => 3 
       [name] => Fashion 
       [slug] => fashion 
      ) 
     ) 
    ) 
) 

Я ищу, чтобы принести количество бизнеса, то есть возвращаемый результат должен быть что-то вроде этого в зависимости от бизнеса она принадлежит.

Array 
(
    [0] => Array 
    (
     [id] => 1 
     [name] => Entertainment & Lifestyle 
     [slug] => entertainment-lifestyle 
     [Subcategory] => Array 
     (
      [0] => Array 
      (
       [id] => 1 
       [name] => Arts and Crafts 
       [slug] => arts-and-crafts 
       [business_count] => 35 
      ) 
      [1] => Array 
      (
       [id] => 2 
       [name] => Family 
       [slug] => family 
       [business_count] => 10 
      ) 
      [2] => Array 
      (
       [id] => 3 
       [name] => Fashion 
       [slug] => fashion 
       [business_count] => 27 
      ) 
     ) 
    ) 
) 

Пробовал различные способы использования DQL, но ничего не получается. Любая идея, как мне идти с тем, что я хочу?

ответ

1

ли вы попробовать:

$q = Doctrine_Query::create() 
    ->select('c.name, c.slug, sc.name, sc.slug, COUNT(sc.BusinessSubcategory.id) AS business_count') 
    ->from('Model_Category c') 
    ->leftJoin('c.Subcategory sc') 
    ->groupBy('c.id, sc.id'); 

с HYDRATE_ARRAY

+0

это работает, спасибо так много, никогда не знал, что DQL позволяет сделать этот вид запросов. :) –

Смежные вопросы