2014-08-30 27 views
0

我正在使用此代碼來製作卡車類型的列表,並按類型進行排序和排序。CakePHP找不到正確的引號到查詢中

$count['type'] = $this->Type->find('all', 
     array('joins' => array(
      array(
       'table' => 'truck_has_types', 
       'alias' => 'TruckHasTypes', 
       'type' => 'LEFT', 
       'conditions' => array(
        'Type.id' => 'TruckHasTypes.types_id', 
       ) 
      ) 
     ), 
     'fields' => array(
      'Type.id', 
      'Type.name', 
      'COUNT(TruckHasTypes.types_id) as N'), 
      'group' => 'TruckHasTypes.types_id' 
     ) 
    ); 

查詢只返回單個結果,即使認爲應該有更多。我找到了罪魁禍首。查詢看起來是這樣的(從sql_dump得到這個)

SELECT `Type`.`id`, `Type`.`name`, COUNT(`TruckHasTypes`.`types_id`) as N FROM `douglass_cake`.`types` AS `Type` LEFT JOIN `douglass_cake`.`truck_has_types` AS `TruckHasTypes` ON (`Type`.`id` = 'TruckHasTypes.types_id') WHERE 1 = 1 GROUP BY `TruckHasTypes`.`types_id` 

你可以看到,

ON (`Type`.`id` = 'TruckHasTypes.types_id') 

是否不具有相同的報價爲

ON (`Type`.`id` = `TruckHasTypes`.`types_id`) 

我已經手動添加這些報價phpmyadmin和查詢成功,但我不能讓cakephp自動生成這個查詢。有任何想法嗎?

謝謝! 瑞安

回答

1

這樣來做:

$count['type'] = $this->Type->find('all', 
    array(
     'joins' => array(
      array(
       'table' => 'truck_has_types', 
       'alias' => 'TruckHasTypes', 
       'type' => 'LEFT', 
       'conditions' => array(
        'Type.id=TruckHasTypes.types_id', 
       ) 
      ) 
     ), 
     'fields' => array(
      'Type.id', 
      'Type.name', 
      'COUNT(TruckHasTypes.types_id) as N' 
     ), 
     'group' => 'TruckHasTypes.types_id' 
    ) 
); 
+0

我不敢相信我沒有想到這個.....謝謝! – Rymn 2014-08-31 06:48:59

0

而不是寫joins的做「蛋糕的方式」 - 寫模型關聯:Associations: Linking Models Together

也做'group' => 'TruckHasTypes.types_id'需要一層一層上?

+0

我有模特協會的事情需要在網站上的方式。這是一個罕見的電話。 – Rymn 2014-08-31 06:43:30

+1

'組'在右側。格式不好。 – bancer 2014-08-31 09:37:41