如何使用cakephp中的join连接从三个表中获取具有公共包ID的数据?
包ID在三个表之间是通用的。
我想从具有特定包ID的三个表中获取数据。
是否有任何查询在重要时间从三个表中获取特定包ID的数据?
答案 0 :(得分:2)
有两种主要方法可以做到这一点。其中一个是标准 CakePHP方式,另一个是使用自定义连接。
答案 1 :(得分:0)
联接可以按如下方式完成,替换你的表而不是我的
在这里假设我的表,控制器是CourseLessonsReference
控制器,所以我可以加入其他2个或多个表,如下所示:
$conditionForId = array('CourseLessonsReference.course_id'=>$package_id,
);
//Pagination logic
$this->paginate = $allConditionsFields = array('conditions' => $conditionSearchLessonsByCourse,
"joins" => array(
array(//UserCourse = Course Join
"table" => "courses",
"alias" => "Course1",
"type" => "INNER",
"conditions" => array(
"Course1.id = CourseLessonsReference.course_id"
)
),//For Category = Course Join
array(
"table" => "course_categories",
"alias" => "CourseCategory",
"type" => "INNER",
"conditions" => array(
"CourseCategory.id = Course1.course_category_id"
)
)
),
'recursive' => 2
);
$resultOfJoin = $this->CourseLessonsReference->find('all', $allConditionsFields);
$ resultOfJoin将为您提供3个表的连接结果。
这意味着将当前表CourseLessonsReference
与$ allConditionsFields数组中的Join标记中的指定表连接。
由于你没有提供表的模式,在我的例子中,Current Controller / model / table是CourseLessonsReference,它将有引用。引用与Course相关联,因此course_id是course_lessons_reference表中的外键。所以这是1次加入。现在课程已连接到类别,因此课程将course_category_id
作为外键。