3

作成された追加のフィールド、結合からの一致にカウントしたい。これは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
4

2 に答える 2

4

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 : [Goal と Task という名前のモデルがある場合]

$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);
于 2013-08-09T14:13:56.633 に答える
0

mysql は次のようになります。

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

CakePHP は、テストしないとわかりません...

于 2013-08-09T13:45:54.303 に答える