From 2dc0f32c1ed5ebd073964e66c4f724b2c0e7d1ef Mon Sep 17 00:00:00 2001 From: JNapolitanoIT Date: Tue, 4 Apr 2023 12:40:10 -0700 Subject: [PATCH] ORM Changes - All ORM traits (except HasQuery) now return a collection of data instead of the builder instead of a new Builder instance. - The `HasQuery` ORM trait has been introduced, to return a new Builder instance on the current entity class. --- src/Entity.php | 6 ++++-- src/ORM/HasAll.php | 4 ++-- src/ORM/HasFind.php | 4 ++-- src/ORM/HasFirst.php | 4 ++-- src/ORM/HasJoin.php | 4 ++-- src/ORM/HasLast.php | 4 ++-- src/ORM/HasLike.php | 4 ++-- src/ORM/HasNot.php | 4 ++-- src/ORM/HasQuery.php | 16 ++++++++++++++++ src/ORM/HasWhere.php | 4 ++-- 10 files changed, 36 insertions(+), 18 deletions(-) create mode 100644 src/ORM/HasQuery.php diff --git a/src/Entity.php b/src/Entity.php index 770d9b8..cba941a 100644 --- a/src/Entity.php +++ b/src/Entity.php @@ -4,7 +4,8 @@ use ReflectionClass; use ReflectionProperty; - use DatabaseFactory\Facades; + use DatabaseFactory\ORM; + use DatabaseFactory\Facades; /** * The base entity class @@ -20,7 +21,8 @@ class Entity { // ORM Plugins - use \DatabaseFactory\ORM\HasTable; + use ORM\HasTable; + use ORM\HasQuery; /** * ID of a record for updating diff --git a/src/ORM/HasAll.php b/src/ORM/HasAll.php index 795a18d..8cebfbc 100644 --- a/src/ORM/HasAll.php +++ b/src/ORM/HasAll.php @@ -17,9 +17,9 @@ */ trait HasAll { - public static function all(string $columns = '*'): Builder + public static function all(string $columns = '*') { - return Facades\DB::table(static::table())->select($columns); + return Facades\DB::table(static::table())->select($columns)->get(); } } } diff --git a/src/ORM/HasFind.php b/src/ORM/HasFind.php index e8067be..c7a84be 100644 --- a/src/ORM/HasFind.php +++ b/src/ORM/HasFind.php @@ -17,9 +17,9 @@ */ trait HasFind { - public static function find(int $id, string $columns = '*'): Builder + public static function find(int|string $value, string $by = 'id', string $columns = '*') { - return Facades\DB::table(static::table())->select($columns)->where('id', '=', $id); + return Facades\DB::table(static::table())->select($columns)->where($by, '=', $value)->get(); } } } diff --git a/src/ORM/HasFirst.php b/src/ORM/HasFirst.php index 87ba3a0..4dca367 100644 --- a/src/ORM/HasFirst.php +++ b/src/ORM/HasFirst.php @@ -19,9 +19,9 @@ */ trait HasFirst { - public static function first(string $columns = '*'): Builder + public static function first(string $columns = '*') { - return Facades\DB::table(static::table())->select($columns)->orderBy('id', 'ASC')->limit(1); + return Facades\DB::table(static::table())->select($columns)->orderBy('id', 'ASC')->limit(1)->get(); } } } diff --git a/src/ORM/HasJoin.php b/src/ORM/HasJoin.php index 8d171a9..77c3df3 100644 --- a/src/ORM/HasJoin.php +++ b/src/ORM/HasJoin.php @@ -17,9 +17,9 @@ */ trait HasJoin { - public static function join(string $table, array $on, string $columns = '*'): Builder + public static function join(string $table, array $on, string $columns = '*') { - return Facades\DB::table(static::table())->join($table, $on, $columns); + return Facades\DB::table(static::table())->join($table, $on, $columns)->get(); } } } diff --git a/src/ORM/HasLast.php b/src/ORM/HasLast.php index c48530f..96d0ecf 100644 --- a/src/ORM/HasLast.php +++ b/src/ORM/HasLast.php @@ -19,9 +19,9 @@ */ trait HasLast { - public static function last(string $columns = '*'): Builder + public static function last(string $columns = '*') { - return Facades\DB::table(static::table())->select($columns)->orderBy('id', 'DESC')->limit(1); + return Facades\DB::table(static::table())->select($columns)->orderBy('id', 'DESC')->limit(1)->get(); } } } diff --git a/src/ORM/HasLike.php b/src/ORM/HasLike.php index f822f56..ee9cf26 100644 --- a/src/ORM/HasLike.php +++ b/src/ORM/HasLike.php @@ -17,9 +17,9 @@ */ trait HasLike { - public static function like(string $field, string $pattern, string $columns = '*'): Builder + public static function like(string $field, string $pattern, string $columns = '*') { - return Facades\DB::table(static::table())->select($columns)->like($field, $pattern); + return Facades\DB::table(static::table())->select($columns)->like($field, $pattern)->get(); } } } diff --git a/src/ORM/HasNot.php b/src/ORM/HasNot.php index b144477..461b52c 100644 --- a/src/ORM/HasNot.php +++ b/src/ORM/HasNot.php @@ -18,9 +18,9 @@ */ trait HasNot { - public static function whereNot($key = null, $value = null, string $columns = '*'): Builder + public static function whereNot($key = null, $value = null, string $columns = '*') { - return Facades\DB::table(static::table())->select($columns)->whereNot($key, $value); + return Facades\DB::table(static::table())->select($columns)->whereNot($key, $value)->get(); } } } diff --git a/src/ORM/HasQuery.php b/src/ORM/HasQuery.php new file mode 100644 index 0000000..99e2558 --- /dev/null +++ b/src/ORM/HasQuery.php @@ -0,0 +1,16 @@ +select($columns)->where($key, $is, $value); + return Facades\DB::table(static::table())->select($columns)->where($key, $is, $value)->get(); } } }