diff --git a/src/GenericModel.php b/src/GenericModel.php index 0cf83c8..bc35e55 100644 --- a/src/GenericModel.php +++ b/src/GenericModel.php @@ -23,9 +23,9 @@ use Aternos\Model\Query\DeleteQuery; use Aternos\Model\Query\GroupField; use Aternos\Model\Query\Limit; +use Aternos\Model\Query\MultiQueryResult; use Aternos\Model\Query\Query; use Aternos\Model\Query\QueryResult; -use Aternos\Model\Query\QueryResultCollection; use Aternos\Model\Query\SelectQuery; use Aternos\Model\Query\UpdateQuery; use Aternos\Model\Query\WhereCondition; @@ -480,10 +480,11 @@ public static function query(Query $query): QueryResult $results = []; $lastException = null; foreach ($drivers as $queryableDriver) { - /** @var QueryableInterface $driver */ + /** @var QueryableInterface|DriverInterface $driver */ $driver = static::getDriverRegistry()->getDriver($queryableDriver); try { $result = $driver->query($query); + $result->setDriver($driver); if ($query instanceof SelectQuery) { $lastException = null; @@ -519,7 +520,7 @@ public static function query(Query $query): QueryResult if ($query instanceof SelectQuery || count($results) === 1) { return $result; } else { - return new QueryResultCollection($results); + return new MultiQueryResult()->addQueryResults($results); } } diff --git a/src/Query/MultiQueryResult.php b/src/Query/MultiQueryResult.php new file mode 100644 index 0000000..f30e846 --- /dev/null +++ b/src/Query/MultiQueryResult.php @@ -0,0 +1,51 @@ +queryResults[] = $queryResult; + if ($queryResult->getQueryString() !== null) { + $this->setQueryString($queryResult->getQueryString()); + } + if ($queryResult->getQueryString() !== null) { + $this->setAffectedRows($queryResult->getAffectedRows()); + } + return $this; + } + + /** + * @param QueryResult[] $queryResults + * @return $this + */ + public function addQueryResults(array $queryResults): static + { + foreach ($queryResults as $queryResult) { + if ($queryResult instanceof QueryResult) { + $this->addQueryResult($queryResult); + } + } + return $this; + } + + /** + * @return QueryResult[] + */ + public function getAllQueryResults(): array + { + return $this->queryResults; + } +} \ No newline at end of file diff --git a/src/Query/QueryResult.php b/src/Query/QueryResult.php index d85978c..2b41375 100644 --- a/src/Query/QueryResult.php +++ b/src/Query/QueryResult.php @@ -2,6 +2,7 @@ namespace Aternos\Model\Query; +use Aternos\Model\Driver\DriverInterface; use Aternos\Model\ModelCollection; use Aternos\Model\ModelInterface; @@ -14,6 +15,8 @@ */ class QueryResult extends ModelCollection { + protected ?DriverInterface $driver = null; + /** * Raw query string that was executed * @@ -83,4 +86,22 @@ public function setAffectedRows(?int $affectedRows): static } return $this; } + + /** + * @param DriverInterface $driver + * @return $this + */ + public function setDriver(DriverInterface $driver): static + { + $this->driver = $driver; + return $this; + } + + /** + * @return DriverInterface|null + */ + public function getDriver(): ?DriverInterface + { + return $this->driver; + } } diff --git a/src/Query/QueryResultCollection.php b/src/Query/QueryResultCollection.php deleted file mode 100644 index d9cd8c9..0000000 --- a/src/Query/QueryResultCollection.php +++ /dev/null @@ -1,28 +0,0 @@ -