diff --git a/src/Common/PdoObject.php b/src/Common/PdoObject.php index e160d6b..fc6c33e 100644 --- a/src/Common/PdoObject.php +++ b/src/Common/PdoObject.php @@ -8,6 +8,8 @@ use PDO, class PdoObject extends PDO { public function select(string $sql, array $parameters = []): PDOStatement { + # var_dump($sql, $parameters); die(); + try { if (false !== ( $statement = $this->prepare($sql) )) { $statement = $this->execute($statement, $parameters, false); @@ -21,6 +23,8 @@ class PdoObject extends PDO { } public function runQuery(string $sql, array $parameters = []): ? PDOStatement { + # dump($sql, $parameters); return null; + try { if (false !== ( $statement = $this->prepare($sql) )) { return $this->execute($statement, $parameters, true); diff --git a/src/EntityCollection.php b/src/EntityCollection.php index 5c3ffe0..031a190 100644 --- a/src/EntityCollection.php +++ b/src/EntityCollection.php @@ -30,12 +30,14 @@ class EntityCollection extends \ArrayObject { return $collection; } - public function searchOne($value, string $field) : object + public function searchOne($value, string $field) : ? object { # Returning first value only foreach($this->search($value, $field) as $item) { return $item; } + + return null; } public function search($value, string $field) : Generator diff --git a/src/Repository.php b/src/Repository.php index cca915f..d5c8c2b 100644 --- a/src/Repository.php +++ b/src/Repository.php @@ -105,9 +105,7 @@ class Repository throw new \Exception(sprintf("No primary key found for entity %s", $this->entityClass)); } - $diff = array_diff_assoc($dataset, $entity->entityGetDataset(true)); - - if ( [] !== $diff ) { + if ( [] !== $diff = $this->generateDatasetDiff($entity) ) { $pkField = key($primaryKeyDefinition); $pkFieldName = $primaryKeyDefinition[$pkField]->name ?? $pkField; $this->where($pkFieldName, $dataset[$pkFieldName]); @@ -128,6 +126,11 @@ class Repository } } + public function generateDatasetDiff(object $entity) : array + { + return array_diff_assoc( array_change_key_case($entity->toArray()), array_change_key_case($entity->entityGetDataset(true)) ); + } + public function yieldAll() : \Generator {