diff --git a/src/Collection.php b/src/Collection.php index 5723937..ad7b26f 100644 --- a/src/Collection.php +++ b/src/Collection.php @@ -5,9 +5,10 @@ namespace Kletellier\PdoWrapper; use ArrayIterator; use Countable; use IteratorAggregate; +use JsonSerializable; use Traversable; -class Collection implements IteratorAggregate, Countable +class Collection implements IteratorAggregate, Countable, JsonSerializable { private array $elements; @@ -111,4 +112,9 @@ class Collection implements IteratorAggregate, Countable { return new ArrayIterator($this->elements); } + + public function jsonSerialize(): mixed + { + return $this->elements; + } } diff --git a/src/Model.php b/src/Model.php index d0c9e75..4a19a83 100644 --- a/src/Model.php +++ b/src/Model.php @@ -2,7 +2,9 @@ namespace Kletellier\PdoWrapper; -class Model +use JsonSerializable; + +class Model implements JsonSerializable { protected mixed $values; protected array $updated; @@ -153,4 +155,9 @@ class Model return $table; } + + public function jsonSerialize(): mixed + { + return $this->values; + } } diff --git a/tests/CollectionTest.php b/tests/CollectionTest.php index 57db513..b9b7eff 100644 --- a/tests/CollectionTest.php +++ b/tests/CollectionTest.php @@ -67,6 +67,9 @@ test("collection", function () { expect($collo)->toBeInstanceOf(Collection::class); expect(count($collo))->toBe(2); + $json = json_encode($collo); + expect($json)->toBeJson(); + $pluck = $collo->pluck("key"); expect($pluck)->toBeInstanceOf(Collection::class); expect(count($pluck))->toBe(2); diff --git a/tests/DbTest.php b/tests/DbTest.php index 90f17d9..d7438b3 100644 --- a/tests/DbTest.php +++ b/tests/DbTest.php @@ -53,6 +53,12 @@ test("model find", function() { $row->col1 = "test"; $res = $row->save(); expect($res)->toBe(true); + + $json = json_encode($row); + expect($json)->toBeJson(); + + $obj = json_decode($json); + expect($obj->col1)->toBe("test"); }); test("querybuilder", function() {