Commit 8f2f2dc3 authored by Petr Besir Horáček's avatar Petr Besir Horáček
Browse files

Fixed resolving idFieldSerializer in collections

No related merge requests found
Showing with 30 additions and 0 deletions
+30 -0
......@@ -37,6 +37,16 @@ class CollectionGenerator
$class->setExtends(BaseDatabaseDataCollection::class);
if (isset($this->definition['databaseTableId']) && ! empty($this->definition['databaseTableId'])) {
$idFieldSerializer = $class->addProperty('idFieldSerializer');
$idField = $this->findIdField();
if (is_array($idField) && isset($idField['toString'])) {
$idFieldSerializer->setValue($idField['toString']);
}
}
$methodCreate = $class->addMethod('create');
$methodCreate->addBody('return new static($data, ?, $idField);', [new PhpLiteral($this->getRowFactoryClassName() . '::class')])
......@@ -56,4 +66,24 @@ class CollectionGenerator
return (string) $file;
}
private function findIdField(): ?array
{
if (
isset($this->definition['databaseCols']['rw'])
&& isset(
$this->definition['databaseCols']['rw'][$this->definition['databaseTableId']]
)
) {
return $this->definition['databaseCols']['rw'][$this->definition['databaseTableId']];
} else if (isset($this->definition['databaseCols']['rw'])
&& isset(
$this->definition['databaseCols']['ro'][$this->definition['databaseTableId']]
)
) {
return $this->definition['databaseCols']['ro'][$this->definition['databaseTableId']];
}
return null;
}
}
Supports Markdown
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment