X-Git-Url: https://git.mxchange.org/?a=blobdiff_plain;f=src%2FBaseRepository.php;h=c14d6f7bc1283bbca258a8652ad28f7bcd36e5f0;hb=582f6bd4a35a864d9425b7c912121346deebdc4b;hp=9f43d8fe144437adb62ee5c311667cb45833eb50;hpb=f67f398fe1faf6ec53407e50d7c62cc3a30fe09d;p=friendica.git diff --git a/src/BaseRepository.php b/src/BaseRepository.php index 9f43d8fe14..c14d6f7bc1 100644 --- a/src/BaseRepository.php +++ b/src/BaseRepository.php @@ -122,7 +122,12 @@ abstract class BaseRepository extends BaseFactory */ public function update(BaseModel $model) { - return $this->dba->update(static::$table_name, $model->toArray(), ['id' => $model->id], true); + if ($this->dba->update(static::$table_name, $model->toArray(true), ['id' => $model->id], $model->getOriginalData())) { + $model->resetOriginalData(); + return true; + } + + return false; } /** @@ -136,11 +141,13 @@ abstract class BaseRepository extends BaseFactory { $return = $this->dba->insert(static::$table_name, $fields); - if ($return) { - $fields['id'] = $this->dba->lastInsertId(); - $return = $this->create($fields); + if (!$return) { + throw new HTTPException\InternalServerErrorException('Unable to insert new row in table "' . static::$table_name . '"'); } + $fields['id'] = $this->dba->lastInsertId(); + $return = $this->create($fields); + return $return; } @@ -197,4 +204,12 @@ abstract class BaseRepository extends BaseFactory return $models; } + + /** + * @param BaseCollection $collection + */ + public function saveCollection(BaseCollection $collection) + { + $collection->map([$this, 'update']); + } }