我是CakePHP的新手,我遇到了让我的所有模型正确链接的问题。
这是我在cakePHP中的模型布局:
类所属位置
类belongsTo ClassType
类hasMany ScheduledClass
ScheduledClass属于教练
我的问题是,当我使用时:
$this->Class->find('all')
我只从Class,Location,ClassType和ScheduledClass模型中获取数据。我没有从讲师模型中获取任何数据。
我可以将递归值设置为'2'并从Instructor模型中检索数据,但这会导致大量查询(每行一个)而不是“ScheduledClass.instructor_id = Instructor.id”上的连接”
我希望实现的目标是:
SELECT
...
...
FROM classes as Class
INNER JOIN locations as Location on Class.location_id = Location.id
INNER JOIN class_types as ClassType on Class.class_type_id = ClassType.id
INNER JOIN scheduled_classes as ScheduledClass on ScheduledClass.class_id = Class.id
INNER JOIN instructors as Instructor on ScheduledClass.instructor_id = Instructor.id
我尝试使用Containable和Joins来获取正确的数据,但我无法工作(可能是因为我误解了他们的用途)。
提前谢谢!
答案 0 :(得分:0)
使用Containable并设置查找的反应方式并获取所需的数据。
模型中的
var $actsAs = array('Containable');
并且在Controller中你可以做这样的事情
$this->data = $this->User->find('first', array('conditions' => array('User.id' => $this->Auth->user('id')), 'contain' => array('City', 'Region', 'Country', 'UserOccupations', 'UserGroup')));
如果你的模型/数据库关系设置正确,你可以提取你想要的确切数据,甚至选择你想要的列。