- Bugfix within PdoObject and Repository
- Added some utilities methods to EntityCollection
This commit is contained in:
parent
d03f9ece36
commit
4b29232543
|
@ -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);
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
{
|
||||
|
||||
|
|
Loading…
Reference in New Issue