2013-04-25 60 views
1

我已经将我的许多项目转换为Cake,但成功,但我有一个构成我正在努力的挑战。cakephp在一个连接表中一次加入两个以上的表格

在典型的“hasMany through”连接中,例如,在Cake文档中,您有3个表格,StudentCourseCourseMembershipStudentCourse hasMany CourseMembershipCourseMembership belongsTo StudentCourse

我的问题是,是否有可能使用常规惯例以这种方式将两个以上的表连接在一起?例如,添加另一个表格,比如说,Lecturer(忘记了这种现实世界的可能性)会创建更多可能的排列,但Cake可以在本地处理这个问题吗?

在此先感谢。

编辑:这将是联接(HTH)表格的布局:

id | student_id | course_id | lecturer_id 

编辑2:默认情况下,连接表将被称为course_students所以我是后是一台名为course_lecturer_students与上面的布局(显然它不需要被调用,只是为了遵守CakePHP命名约定)。

回答

0

你可以使用CakePHP的

  1. 写简单的SQL作为查询(无RECOMENDABLE)
  2. 写联接句子
  3. 使用深协会(RECOMENDABLE)

但是你的问题是不是清楚,不可能确定你正在寻找哪种答案,或者你在找什么

也许你可以扩展你正在寻找的最终结果,以帮助你

+0

3号)。我想通过1个连接表连接3,4或甚至5个表。我知道我可以做到,我想知道的是做这件事的惯例(如果有的话)。 – khany 2013-04-25 15:27:17

+0

我通常使用深层关系的船,为〔实施例 $这个 - > MyModel-> bindModel(阵列( '属于关联'=>阵列( 'OneModel'=>阵列( '的className'=> 'OtherModel', 'foreignKey'= FALSE, 'conditions'=>'OneModel.id = OtherModel.one_model_id' ), ........ //根据需要深入 ) )); 这样,也可以在HasOne上工作,具体取决于你们之间的关系,你有没有注意到你的模型基础 这是更好的方式,加入sentense通常和mysql很好地工作,但没有和其他da一样好,比如postgres或者sqlite,绑定模型可能会更好 – Carlos 2013-04-25 15:31:48

0

绝对如此。你可以用Join尽可能多的表格。使用CakePHP进行连接与使用MySQL来运行Join查询没有区别 - CakePHP只是使用CakePHP语法并为您创建MySQL(或其他)查​​询。

附注 - 只要确保你正确索引你的表。