2013-08-09 2 views
2

Я хочу подсчитать до созданного дополнительного поля, совпадений от соединения. Возможно ли это в CakePHP? У меня есть пример моих данных, которые у меня есть.Как вы можете рассчитывать совпадения из действия объединения в CakePHP?

И как бы запрос выглядел в mySQL для такого типа результата?

Таблица: Цель

id | name 
----------- 
1 Goal X 
2 Goal Y 

Таблица: задачи

id | name | goal_id 
------------------- 
1 task1 1 
2 task2 1 
3 task3 2 
4 task4 2 
5 task5 2 

Результат

id | name | matches 
------------------- 
1 goal1 2 
2 goal2 3 

ответ

3

MySQL запросов:

SELECT goal.id, goal.name, Count(*) AS matches 
FROM goal 
RIGHT JOIN task ON goal.id = task.goal_id 
GROUP BY goal.id 

CakePHP: [если у вас есть модель с именем цель и задача]

$options['fields'] = array(
          'Goal.id', 
          'Goal.name', 
          'count(*) AS matches' 
        ); 
$options['joins'] = array(
           array(
           'table' => 'tasks', 
           'alias' => 'Task', 
           'type' => 'Right', 
           'conditions' => array(
            'Goal.id = Task.goal_id' 
           ) 
          ) 
        ); 
$options['group'] => array('Goal.id'); 

$result = $this->Goal->find('all', $options); 
0

MySQL должны быть следующими:

Select goal.id,goal.name,Count(*) From goal RIGHT JOIN tasks on goal.id=tasks.goal_id Group by goal.id 

CakePHP, не могу вам сказать без тестирования ...

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