invictus
invictus

Reputation: 825

Silverstripe 3.1 - Can't create a new many_many relation

while extending the CsvBulkUploader to fit my needs, I cam across the problem, that Silverstripe doesn't let me create a new entry for a many_many relation.

My dataobject is ShopItems and has a many_many relation called Visuals. So in my MySQL database I get ShopItems_Visuals.

Now I want to create a new entry for this with the following code, and I think here's the place I made some mistake.

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

after adding this to my function, I receive Class 'ShopItem_Visuals' not found after hitting the import button.

Is that because the database Table was created through the many_many relation in ShopItem and has no ClassName itself?

Can someone tell me how to create a new entry for this relation?

Thank you in advance.

Upvotes: 0

Views: 150

Answers (1)

gherkins
gherkins

Reputation: 14983

I don't think that there's a Class for the mapping table itself.
The entry in it should be created automagically, when adding a related Object via add.

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

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

If the many-many-relation name is Visuals, calling ->Visuals() should return an instance of ManyManyList on which you can call add, remove etc.

see http://api.silverstripe.org/3.0/class-ManyManyList.html

Upvotes: 3

Related Questions