在扩展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吗?
有人可以告诉我如何为这种关系创建一个新条目吗?
提前谢谢。
答案 0 :(得分:3)
我不认为映射表本身就有一个Class 当通过添加添加相关的对象时,应该自动创建其中的条目。
$visual = new Visual();
...
$visual->write();
$ShoptItem->Visuals()->add($visual);
$ShoptItem->write();
如果多对多关系名称为Visuals
,则调用->Visuals()
应返回ManyManyList
的实例,您可以在其上调用add,remove等。