Skip to content

Commit

Permalink
Merge pull request #7989 from open-sausages/pulls/4.0/bulk-through-bug
Browse files Browse the repository at this point in the history
BUG Fix many_many through crashing ModelAdmin
  • Loading branch information
robbieaverill committed Apr 10, 2018
2 parents 75a29b8 + e11ba9a commit b6c6bd6
Showing 1 changed file with 18 additions and 7 deletions.
25 changes: 18 additions & 7 deletions src/Dev/BulkLoader.php
Original file line number Diff line number Diff line change
Expand Up @@ -223,19 +223,30 @@ public function Title()
**/
public function getImportSpec()
{
$spec = array();
$singleton = DataObject::singleton($this->objectClass);

// get database columns (fieldlabels include fieldname as a key)
// using $$includerelations flag as false, so that it only contain $db fields
$spec['fields'] = (array)singleton($this->objectClass)->fieldLabels(false);
$fields = (array)$singleton->fieldLabels(false);

$has_ones = singleton($this->objectClass)->hasOne();
$has_manys = singleton($this->objectClass)->hasMany();
$many_manys = singleton($this->objectClass)->manyMany();
// Merge relations
$relations = array_merge(
$singleton->hasOne(),
$singleton->hasMany(),
$singleton->manyMany()
);

$spec['relations'] = (array)$has_ones + (array)$has_manys + (array)$many_manys;
// Ensure description is string (e.g. many_many through)
foreach ($relations as $name => $desc) {
if (!is_string($desc)) {
$relations[$name] = $name;
}
}

return $spec;
return [
'fields' => $fields,
'relations' => $relations,
];
}

/**
Expand Down

0 comments on commit b6c6bd6

Please sign in to comment.