所以我从我的一个模型中找到了一些数据:
// Models
class SubjectChange extends AppModel {
public $belongsTo = array('Subject', 'User');
}
class Subject extends AppModel {
public $hasMany = array('SubjectChange');
public $belongsTo = array('SubjectGroup');
}
// Controller code to get all SubjectChanges
$subjectChanges = ClassRegistry::init('SubjectChange')->find('all', array(
'contain' => array(
'Subject.name',
'User.full_name'
)
));
这会让我像这样返回每个SubjectChange,这很棒:
Array
(
[SubjectChange] => Array
(
[id] => 35,
[subject_group_id] => 5,
[timestamp] => '2011-10-18 16:52:24'
)
[Subject] => Array
(
[name] => 'English'
)
[User] => Array
(
[full_name] => 'John Smith'
)
)
但我想使用SubjectChange部分中的subject_group_id添加SubjectGroup的名称。这里要注意的重要一点是,SubjectChange模型不与SubjectGroup模型有任何关系,和我无法从Subject获取它,因为它可能有当前存储在数据库中的不同subject_group_id。
我只是想在我的查询中进行某种连接以从我拥有的SubjectChange subject_group_id中获取SubjectGroup名称,以将此数据添加到上面:
[SubjectGroup] => Array
(
[name] => 'My Group Name'
)
这甚至可能吗?
答案 0 :(得分:1)
然后我会做一个完整的答案。
你有3种方法可以做到这一点:
你应该使用的正常和第一个是var hasMany,var BelongsTo等声明的关联......
第二种方法是动态地进行第一种方式
$this->Leader->bindModel(
array('hasMany' => array(
'Principle' => array(
'className' => 'Principle',
//other attributes
)
)
)
);
只需使用bindModel函数执行此操作,您可能会看到更多in the book
第三种方法是在查找中强制加入,为此您可能会看more in the book here
也许有更多的选择,但我现在不记得了。无论如何这是足够容易的:)
希望它可以帮到你