如何通过在cakephp中加入三个表中的数据?

时间:2015-02-17 07:02:21

标签: php mysql cakephp join

如何使用cakephp中的join连接从三个表中获取具有公共包ID的数据?

包ID在三个表之间是通用的。

我想从具有特定包ID的三个表中获取数据。

是否有任何查询在重要时间从三个表中获取特定包ID的数据?

2 个答案:

答案 0 :(得分:2)

有两种主要方法可以做到这一点。其中一个是标准 CakePHP方式,另一个是使用自定义连接

CakePHP Join Multiple Table

答案 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作为外键。