diff --git a/DataStorage/Database/DataMapperAbstract.php b/DataStorage/Database/DataMapperAbstract.php index f79c156fe..e6e396a2b 100644 --- a/DataStorage/Database/DataMapperAbstract.php +++ b/DataStorage/Database/DataMapperAbstract.php @@ -1386,19 +1386,16 @@ class DataMapperAbstract implements DataMapperInterface self::addInitialized(static::class, $objId, $obj); - if (empty($objId)) { - $update = false; - self::create($obj, $relations); - } - if ($relations === RelationType::ALL) { self::updateHasMany($refClass, $obj, $objId, --$depth); } - if ($update) { - self::updateModel($obj, $objId, $refClass, --$depth); + if (empty($objId)) { + return self::create($obj, $relations); } + self::updateModel($obj, $objId, $refClass, --$depth); + return $objId; } diff --git a/DataStorage/Database/Query/Grammar/Grammar.php b/DataStorage/Database/Query/Grammar/Grammar.php index ba272f691..f9cf3b619 100644 --- a/DataStorage/Database/Query/Grammar/Grammar.php +++ b/DataStorage/Database/Query/Grammar/Grammar.php @@ -316,6 +316,8 @@ class Grammar extends GrammarAbstract return \rtrim(\rtrim(\number_format($value, 5, '.', ''), '0'), '.'); } elseif ($value instanceof Column) { return $this->compileSystem($value->getColumn(), $prefix); + } elseif ($value instanceof Builder) { + return '(' . \rtrim($value->toSql(), ';') . ')'; } else { throw new \InvalidArgumentException(\gettype($value)); }