0
私は3つのテーブルのプロジェクト、タスク、タグを持っています。 Projects.idは最初のテーブルの主キー、Tasks.idは2番目のテーブルのPK、Tags.idは3番目のテーブルのPKです。ケーキphpは、一致するデータでなくてもjoinを返します。それを修正するには?
プロジェクトモデルコードは
public $primaryKey = 'id';
public $hasMany = array(
'Tasks' => array('className' => 'Tasks','foreignKey' => 'project_id')
);
タスクモデルコードは、いくつかの予期しない結果を返す
public $primaryKey = 'id';
public $hasMany = array(
'Tags' => array('className' => 'Tags','foreignKey' => 'task_id')
);
以下のクエリをスニペットスニペット。
$joins = array(
array('table' => 'project_tasks',
'alias' => 'Tasks',
'type' => 'inner',
'conditions' => array(
'Projects.id = Tasks.project_id'
)
),
array('table' => 'task_tags',
'alias' => 'Tags',
'type' => 'inner',
'conditions' => array(
'Tasks.id = Tags.task_id',
"Tags.tag_name = 'Driver'"
)
)
);
$data = $this->Projects->find('all', array(
'recursive' => 2,
'joins' => $joins
));
私は取得しています応答データは
[Projects] => Array
(
[id] => 1
[project_id] => 1234
[project_name] => XYZ
)
[Tasks] => Array
(
[0] => Array
(
[id] => 1
[project_id] => 1
[task_id] => 12
[task_name] => task1
[Tags] => Array
(
[0] => Array
(
[id] => 1
[task_id] => 1
[tag_id] => 3444
[tag_name] => Driver
)
)
)
[1] => Array
(
[id] => 2
[project_id] => 1
[task_id] => 343242
[task_name] => task2
[Tags] => Array
(
[0] => Array
(
[id] => 2
[task_id] => 2
[tag_id] => 4444
[tag_name] => Doctor
)
)
)
あるドライバーとして、私もタグなしでタスクを取得しています参照してください。タグドライバなしのタスクをどのように除外できますか?