From 4ba6ce161e16571cc62807722b53207b214a76db Mon Sep 17 00:00:00 2001 From: Ahmed Mohamed Abd El Ftah Date: Mon, 15 Nov 2021 20:58:09 +0200 Subject: [PATCH 1/2] Modify DatabaseRule to accept Arrayable instance inside where methods --- src/Illuminate/Validation/Rules/DatabaseRule.php | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/Illuminate/Validation/Rules/DatabaseRule.php b/src/Illuminate/Validation/Rules/DatabaseRule.php index 7789008483fa..9a8240fdf865 100644 --- a/src/Illuminate/Validation/Rules/DatabaseRule.php +++ b/src/Illuminate/Validation/Rules/DatabaseRule.php @@ -3,6 +3,7 @@ namespace Illuminate\Validation\Rules; use Closure; +use Illuminate\Contracts\Support\Arrayable; use Illuminate\Database\Eloquent\Model; use Illuminate\Support\Str; @@ -86,7 +87,7 @@ public function resolveTableName($table) */ public function where($column, $value = null) { - if (is_array($value)) { + if ($value instanceof Arrayable || is_array($value)) { return $this->whereIn($column, $value); } @@ -112,7 +113,7 @@ public function where($column, $value = null) */ public function whereNot($column, $value) { - if (is_array($value)) { + if ($value instanceof Arrayable || is_array($value)) { return $this->whereNotIn($column, $value); } @@ -145,10 +146,10 @@ public function whereNotNull($column) * Set a "where in" constraint on the query. * * @param string $column - * @param array $values + * @param \Illuminate\Contracts\Support\Arrayable|array $values * @return $this */ - public function whereIn($column, array $values) + public function whereIn($column, $values) { return $this->where(function ($query) use ($column, $values) { $query->whereIn($column, $values); @@ -159,10 +160,10 @@ public function whereIn($column, array $values) * Set a "where not in" constraint on the query. * * @param string $column - * @param array $values + * @param \Illuminate\Contracts\Support\Arrayable|array $values * @return $this */ - public function whereNotIn($column, array $values) + public function whereNotIn($column, $values) { return $this->where(function ($query) use ($column, $values) { $query->whereNotIn($column, $values); From 896825a69889ded13195ce3a675a122cd9919e5d Mon Sep 17 00:00:00 2001 From: Ahmed Mohamed Abd El Ftah Date: Mon, 15 Nov 2021 21:13:36 +0200 Subject: [PATCH 2/2] Fix doc blocks --- src/Illuminate/Validation/Rules/DatabaseRule.php | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/Illuminate/Validation/Rules/DatabaseRule.php b/src/Illuminate/Validation/Rules/DatabaseRule.php index 9a8240fdf865..bdb5408f78df 100644 --- a/src/Illuminate/Validation/Rules/DatabaseRule.php +++ b/src/Illuminate/Validation/Rules/DatabaseRule.php @@ -82,7 +82,7 @@ public function resolveTableName($table) * Set a "where" constraint on the query. * * @param \Closure|string $column - * @param array|string|int|null $value + * @param \Illuminate\Contracts\Support\Arrayable|array|string|int|null $value * @return $this */ public function where($column, $value = null) @@ -108,7 +108,7 @@ public function where($column, $value = null) * Set a "where not" constraint on the query. * * @param string $column - * @param array|string $value + * @param \Illuminate\Contracts\Support\Arrayable|array|string $value * @return $this */ public function whereNot($column, $value)