Silverstripe 3.1 - 无法创建新的many_many关系

时间:2014-05-19 13:48:26

标签: php silverstripe

在扩展CsvBulkUploader以满足我的需求时,我解决了问题,Silverstripe不允许我为many_many关系创建一个新条目。

我的数据对象是ShopItems,并且有一个名为Visuals的many_many关系。所以在我的MySQL数据库中,我得到ShopItems_Visuals

现在我想用以下代码为此创建一个新条目,我认为这是我犯了一些错误的地方。

...    
    $visual = ShopItem_Visuals::create();
    $visual->ImageID = $file->ID;
    $visual->ShopItemID = $obj->ID;
    $visual->write();
...

将此功能添加到我的功能后,我在点击导入按钮后收到Class 'ShopItem_Visuals' not found

这是因为数据库表是通过ShopItem中的many_many关系创建的,并且本身没有ClassName吗?

有人可以告诉我如何为这种关系创建一个新条目吗?

提前谢谢。

1 个答案:

答案 0 :(得分:3)

我不认为映射表本身就有一个Class 当通过添加添加相关的对象时,应该自动创建其中的条目。

$visual = new Visual();
...
$visual->write();

$ShoptItem->Visuals()->add($visual);
$ShoptItem->write();

如果多对多关系名称为Visuals,则调用->Visuals()应返回ManyManyList的实例,您可以在其上调用add,remove等。

请参阅http://api.silverstripe.org/3.0/class-ManyManyList.html