Php 银条3.1-一名球员拥有多支球队

Php 银条3.1-一名球员拥有多支球队,php,silverstripe,Php,Silverstripe,我正试图创建一个这样的团队列表 团队负责人-适用于所有团队。小时候有团队页面 团队页面-团队的描述和图像。并且还与团队成员(Dataobject)有一个关系 TeamMember-具有成员。在这里,您还应该能够定义球员所在的球队。这是我的代码。但我不知道如何才能使我的球队页面有很多联系,这样你就可以为一名球员选择多支球队。有人能解决这个问题吗 thx提前如果你想让一个玩家(团队成员)在多个团队中,并且团队中有多个玩家,你需要多个。如果你在这里使用has_many,那么球队将有一个PlayerI

我正试图创建一个这样的团队列表

团队负责人-适用于所有团队。小时候有团队页面

团队页面-团队的描述和图像。并且还与团队成员(Dataobject)有一个关系

TeamMember-具有成员。在这里,您还应该能够定义球员所在的球队。这是我的代码。但我不知道如何才能使我的球队页面有很多联系,这样你就可以为一名球员选择多支球队。有人能解决这个问题吗

thx提前

如果你想让一个玩家(团队成员)在多个团队中,并且团队中有多个玩家,你需要多个。如果你在这里使用has_many,那么球队将有一个PlayerID,这意味着每个球队只能有一名球员

class TeamPage extends Page {
    private static $many_many = array('TeamMembers' => 'TeamMember');
    public function getCMSFields() {
        $fields = parent::getCMSFields();
        $fields->addFieldToTab('Root', Tab::create('MembersTab', 'Team Members'));
        $fields->addFieldToTab('Root.MembersTab', GridField::create('TeamMembers', 'The Team Members', $this->TeamMembers(), GridFieldConfig_RelationEditor::create());
        return $fields;
    }
}
class TeamMember extends DataObject {
    private static $belongs_many_many = array('Teams' => 'TeamPage');
    public function getCMSFields() {
        $fields = FieldList::create();
        if (!$this->isInDB()) {
            // if the TeamMember has not been saved yet, display a message that it needs to be saved before teams can be assigned
            $fields->push(ReadOnlyField::create('Teams', '', 'Save to assign Teams'));
        } else {
            $config = GridFieldConfig_RelationEditor::create();
            // if you don't want the "add a new team" button on this grid, you can remove that with the following line:
            // $config->removeComponentsByType('GridFieldAddNewButton');
            $fields->push(GridField::create('Teams', 'Team this Member is in', $this->Teams(), $config);
        }
        return $fields;
    }
}

这里请注意,我使用了
GridFieldConfig\u RelationEditor
而不是
GridFieldConfig\u RecordEditor
,它向网格字段添加了一个
GridFieldAddExistingAutocompleter
,让您可以链接对象。

团队成员有多个团队?团队成员不应该只有一个团队,而一个团队可以有多个团队成员吗?如果是这样,
TeamPage
将与
TeamMember
有一个
关系,而
TeamMember
将与
TeamPage
有一个
关系。如果一个团队成员可以有多个团队,并且一个团队可以有多个团队成员,那么您需要在这两者之间建立一个
many\u many
关系。所以
TeamPage
会有一个
many
链接到
TeamMember
,而
TeamMember
会有一个
归属的
链接回到
TeamPage
嗨,这似乎很好:)但是在添加新成员时有没有办法删除“添加TeamPage”按钮?什么“添加TeamPage”按钮?你能做一个截图吗?如果你添加了一个新成员,那么你就有了这个选项。您可以通过调用gridfield配置上的removeComponentsByType('GridFieldAddNewButton')
从gridfield中删除该按钮。我在回答中更新了代码示例,将其作为注释包含。是的,这是可能的,但在摘要字段中使用了自定义方法。但这是另一个问题,你介意为此提出一个新问题吗?标题可以是这样的:“在GridField中显示来自多个关系的标题”