我有两个课程项目和开发人员。一个开发人员可以在多个项目中工作,一个项目可以由多个开发人员处理,因此它是一个n-m关系。在我的数据库中有一个表 project_developers ,它是这两个类的映射表。此映射表包括ProjectID和DeveloperID。
<?php
class Developer extends Member {
private static $belongs_many_many = array(
'Projects' => 'Project'
);
}
<?php
class Project extends DataObject {
private static $many_many = array(
'Developers' => 'Developer'
);
}
我想显示一位开发人员的所有项目。
显示所有项目的工作方式如下:
return Project::get();
但我不知道,我如何只获得一个特定开发人员的项目。我想过滤特定开发者ID的映射表。
有谁知道?
答案 0 :(得分:3)
首选方法是让您的开发人员。如果您只有DeveloperID
,请先使用它来获取Developer
:
$developer = Developer::get()->byID($DeveloperID);
然后,您可以轻松地从Projects
Developer
$MyDevelopersProjects = $developer->Projects();
foreach( $MyDevelopersProjects as $Project ) {
...
}
还有其他方法可以手动执行此操作,例如在->join(...)
后使用->filter(...)
和Projects::get()
,但我不建议使用此路线。
还可以使用DataList::Relation($relationName)
来获得结果,但我从来没有使用它们,所以不确定它会如何发展。