diff --git a/src/Environment.php b/src/Environment.php index 67e2e92..ccd6520 100644 --- a/src/Environment.php +++ b/src/Environment.php @@ -19,8 +19,8 @@ interface Environment { public const PROJECT_NAME = 'My Database Packages by HungNG'; - public const VERSION = '4.0.4'; - public const LAST_MODIFIED = '2024-05-01'; + public const VERSION = '4.0.5'; + public const LAST_MODIFIED = '2024-09-11'; public const AUTHOR_NAME = 'Hung Nguyen'; public const AUTHOR_EMAIL = 'dev@nguyenanhung.com'; public const AUTHOR_URL = 'https://nguyenanhung.com'; diff --git a/src/Model/Helper.php b/src/Model/Helper.php index 29f35f3..96b935d 100644 --- a/src/Model/Helper.php +++ b/src/Model/Helper.php @@ -28,8 +28,8 @@ trait Helper /** * Function preparePaging * - * @param int $pageIndex - * @param int $pageSize + * @param int $pageIndex + * @param int $pageSize * * @return array * @see https://laravel.com/docs/6.x/queries#ordering-grouping-limit-and-offset @@ -56,8 +56,8 @@ public function preparePaging(int $pageIndex = 1, int $pageSize = 10): array /** * Function prepareOffset * - * @param int $page - * @param int $size + * @param int $page + * @param int $size * * @return int * @author : 713uk13m @@ -81,7 +81,7 @@ public function prepareOffset(int $page = 1, int $size = 10): int /** * Function prepareOptionFormat * - * @param mixed $options + * @param mixed $options * * @return string|null * @see https://github.com/nguyenanhung/database/blob/master/src/Model/Helper.php @@ -106,7 +106,7 @@ public function prepareOptionFormat($options = array()): ?string /** * Function formatSelectFieldStringToArray * - * @param string $selectField + * @param string $selectField * * @return array|string|string[] * @see https://laravel.com/docs/6.x/queries#selects @@ -126,7 +126,7 @@ public function formatSelectFieldStringToArray(string $selectField = '') $select = array(); foreach ($listSelectField as $field) { $field = trim($field); - if ( ! empty($field)) { + if (!empty($field)) { $select[] = trim($field); } } @@ -143,7 +143,7 @@ public function formatSelectFieldStringToArray(string $selectField = '') /** * Function prepareFormatSelectField * - * @param array|string|null $selectField Mảng hoặc string danh sác các cột cần lấy ra + * @param array|string|null $selectField Mảng hoặc string danh sác các cột cần lấy ra * * @return array|string[] * @see https://laravel.com/docs/6.x/queries#selects @@ -165,7 +165,7 @@ public function prepareFormatSelectField($selectField = array()): array } // Format: If Select Field is Array - if (is_array($selectField) && ! empty($selectField) && $selectField[0] !== '*') { + if (is_array($selectField) && !empty($selectField) && $selectField[0] !== '*') { $listFirstField = explode(',', $selectField[0]); $countFirstField = count($listFirstField); if ($countFirstField > 1) { @@ -183,7 +183,7 @@ public function prepareFormatSelectField($selectField = array()): array /** * Function prepareQueryStatementOptions * - * @param \Illuminate\Database\Query\Builder $builder + * @param \Illuminate\Database\Query\Builder $builder * @param $options * * @return \Illuminate\Database\Query\Builder @@ -201,7 +201,7 @@ public function prepareQueryStatementOptions(Builder $builder, $options = null): } // Case chỉ có Limit - if ((isset($options['limit']) && $options['limit'] > 0) && ! isset($options['offset'])) { + if ((isset($options['limit']) && $options['limit'] > 0) && !isset($options['offset'])) { $builder->limit($options['limit']); } @@ -220,7 +220,7 @@ public function prepareQueryStatementOptions(Builder $builder, $options = null): } // Group Query - if (isset($options['groupBy']) && ! empty($options['groupBy'])) { + if (isset($options['groupBy']) && !empty($options['groupBy'])) { $builder->groupBy($options['groupBy']); } } @@ -231,10 +231,10 @@ public function prepareQueryStatementOptions(Builder $builder, $options = null): /** * Function prepareWhereAndFieldStatement * - * @param \Illuminate\Database\Query\Builder $builder Class Query Builder - * @param string|array $wheres Mảng hoặc giá trị dữ liệu cần so sánh - * @param mixed $fields Column cần so sánh - * @param mixed $options Mảng dữ liệu các cấu hình tùy chọn + * @param \Illuminate\Database\Query\Builder $builder Class Query Builder + * @param string|array $wheres Mảng hoặc giá trị dữ liệu cần so sánh + * @param mixed $fields Column cần so sánh + * @param mixed $options Mảng dữ liệu các cấu hình tùy chọn * example $options = [ * 'format' => null, * 'orderBy => [ @@ -252,7 +252,7 @@ public function prepareQueryStatementOptions(Builder $builder, $options = null): */ public function prepareWhereAndFieldStatement(Builder $builder, $wheres, $fields, $options = null): Builder { - if ( ! empty($wheres)) { + if (!empty($wheres)) { if (is_array($wheres)) { if (count($wheres) > 0) { foreach ($wheres as $field => $value) { @@ -270,10 +270,10 @@ public function prepareWhereAndFieldStatement(Builder $builder, $wheres, $fields $builder->where($field, self::OPERATOR_EQUAL_TO, $value); } } - } elseif ( ! empty($fields)) { + } elseif (!empty($fields)) { $builder->whereIn($fields, $wheres); } - } elseif ( ! empty($fields)) { + } elseif (!empty($fields)) { $builder->where($fields, self::OPERATOR_EQUAL_TO, $wheres); } } @@ -284,7 +284,7 @@ public function prepareWhereAndFieldStatement(Builder $builder, $wheres, $fields /** * Function prepareSimpleWheresWithStatement * - * @param \Illuminate\Database\Query\Builder $builder + * @param \Illuminate\Database\Query\Builder $builder * @param $wheres * * @return \Illuminate\Database\Query\Builder @@ -294,7 +294,7 @@ public function prepareWhereAndFieldStatement(Builder $builder, $wheres, $fields */ public function prepareSimpleWheresWithStatement(Builder $builder, $wheres): Builder { - if ( ! empty($wheres) && is_array($wheres) && count($wheres) > 0) { + if (!empty($wheres) && is_array($wheres) && count($wheres) > 0) { foreach ($wheres as $field => $value) { if (is_array($value)) { if (isset($value['field'], $value['value'])) { @@ -318,7 +318,7 @@ public function prepareSimpleWheresWithStatement(Builder $builder, $wheres): Bui /** * Function prepareSimpleWheresWithOptionsStatement * - * @param \Illuminate\Database\Query\Builder $builder + * @param \Illuminate\Database\Query\Builder $builder * @param $wheres * @param $options * @@ -337,7 +337,7 @@ public function prepareSimpleWheresWithOptionsStatement(Builder $builder, $where /** * Function prepareSimpleWhereEqualToStatement * - * @param \Illuminate\Database\Query\Builder $builder + * @param \Illuminate\Database\Query\Builder $builder * @param $wheres * * @return \Illuminate\Database\Query\Builder @@ -359,7 +359,7 @@ public function prepareSimpleWhereEqualToStatement(Builder $builder, $wheres): B /** * Function prepareSimpleWhereNotEqualToStatement * - * @param \Illuminate\Database\Query\Builder $builder + * @param \Illuminate\Database\Query\Builder $builder * @param $wheres * * @return \Illuminate\Database\Query\Builder @@ -381,7 +381,7 @@ public function prepareSimpleWhereNotEqualToStatement(Builder $builder, $wheres) /** * Function prepareJoinStatement * - * @param \Illuminate\Database\Query\Builder $builder + * @param \Illuminate\Database\Query\Builder $builder * * @return \Illuminate\Database\Query\Builder * @author : 713uk13m @@ -391,7 +391,7 @@ public function prepareSimpleWhereNotEqualToStatement(Builder $builder, $wheres) public function prepareJoinStatement(Builder $builder): Builder { // Kiểm tra dữ liệu trong biến Join có tồn tại hay không - if ( ! empty($this->joins) && is_array($this->joins) && (count($this->joins) > 0)) { + if (!empty($this->joins) && is_array($this->joins) && (count($this->joins) > 0)) { foreach ($this->joins as $join) { // Kiểm tra có các biến join cần thiết hay không if (isset($join['table'], $join['first'], $join['operator'], $join['second'])) { @@ -419,7 +419,7 @@ public function prepareJoinStatement(Builder $builder): Builder * * @param $result * @param $format - * @param bool $loggerStatus + * @param bool $loggerStatus * * @return array|object|string|null|\Illuminate\Support\Collection|\Illuminate\Database\Eloquent\Model|\Illuminate\Database\Query\Builder * @author : 713uk13m @@ -458,7 +458,7 @@ public function formatReturnResult($result, $format, bool $loggerStatus = true) /** * Function formatReturnRowsResult * - * @param \Illuminate\Database\Query\Builder $builder + * @param \Illuminate\Database\Query\Builder $builder * @param $format * * @return array|object|string|null|\Illuminate\Support\Collection|\Illuminate\Database\Eloquent\Model|\Illuminate\Database\Query\Builder @@ -497,11 +497,11 @@ public function formatReturnRowsResult(Builder $builder, $format) /** * Function bindRecursiveFromCategory * - * @param \Illuminate\Database\Query\Builder $db + * @param \Illuminate\Database\Query\Builder $db * @param $recursive * @param $parentId - * @param string $field - * @param mixed $table + * @param string $field + * @param mixed $table * * @return \Illuminate\Database\Query\Builder * @author : 713uk13m @@ -546,10 +546,10 @@ public function bindRecursiveFromCategory( /** * Function filterByPrimaryId * - * @param \Illuminate\Database\Query\Builder $db + * @param \Illuminate\Database\Query\Builder $db * @param $id - * @param string $field - * @param mixed $table + * @param string $field + * @param mixed $table * * @return \Illuminate\Database\Query\Builder * @author : 713uk13m @@ -563,7 +563,16 @@ public function filterByPrimaryId(Builder $db, $id, string $field = 'id', $table } if ($id !== null) { if (is_array($id)) { - $db->whereIn($table . '.' . $field, $id); + $countId = count($id); + if ($countId > 1) { + $db->whereIn($table . '.' . $field, $id); + } else { + if (isset($id[0])) { + $db->where($table . '.' . $field, self::OPERATOR_EQUAL_TO, $id[0]); + } else { + $db->whereIn($table . '.' . $field, $id); + } + } } else { $db->where($table . '.' . $field, self::OPERATOR_EQUAL_TO, $id); } @@ -575,10 +584,10 @@ public function filterByPrimaryId(Builder $db, $id, string $field = 'id', $table /** * Function buildOperatorEqualTo * - * @param \Illuminate\Database\Query\Builder $db + * @param \Illuminate\Database\Query\Builder $db * @param $id - * @param string $field - * @param mixed $table + * @param string $field + * @param mixed $table * * @return \Illuminate\Database\Query\Builder * @author : 713uk13m @@ -592,7 +601,16 @@ public function buildOperatorEqualTo(Builder $db, $id, string $field = 'id', $ta } if ($id !== null) { if (is_array($id)) { - $db->whereIn($table . '.' . $field, $id); + $countId = count($id); + if ($countId > 1) { + $db->whereIn($table . '.' . $field, $id); + } else { + if (isset($id[0])) { + $db->where($table . '.' . $field, self::OPERATOR_EQUAL_TO, $id[0]); + } else { + $db->whereIn($table . '.' . $field, $id); + } + } } else { $db->where($table . '.' . $field, self::OPERATOR_EQUAL_TO, $id); } @@ -604,10 +622,10 @@ public function buildOperatorEqualTo(Builder $db, $id, string $field = 'id', $ta /** * Function buildOperatorNotEqualTo * - * @param \Illuminate\Database\Query\Builder $db + * @param \Illuminate\Database\Query\Builder $db * @param $id - * @param string $field - * @param mixed $table + * @param string $field + * @param mixed $table * * @return \Illuminate\Database\Query\Builder * @author : 713uk13m @@ -621,7 +639,16 @@ public function buildOperatorNotEqualTo(Builder $db, $id, string $field = 'id', } if ($id !== null) { if (is_array($id)) { - $db->whereNotIn($table . '.' . $field, $id); + $countId = count($id); + if ($countId > 1) { + $db->whereNotIn($table . '.' . $field, $id); + } else { + if (isset($id[0])) { + $db->where($table . '.' . $field, self::OPERATOR_NOT_EQUAL_TO, $id[0]); + } else { + $db->whereNotIn($table . '.' . $field, $id); + } + } } else { $db->where($table . '.' . $field, self::OPERATOR_NOT_EQUAL_TO, $id); } @@ -633,10 +660,10 @@ public function buildOperatorNotEqualTo(Builder $db, $id, string $field = 'id', /** * Function buildOperatorLessThanTo * - * @param \Illuminate\Database\Query\Builder $db + * @param \Illuminate\Database\Query\Builder $db * @param $id - * @param string $field - * @param mixed $table + * @param string $field + * @param mixed $table * * @return \Illuminate\Database\Query\Builder * @author : 713uk13m @@ -656,10 +683,10 @@ public function buildOperatorLessThanTo(Builder $db, $id, string $field = 'id', /** * Function buildOperatorGreaterThanTo * - * @param \Illuminate\Database\Query\Builder $db + * @param \Illuminate\Database\Query\Builder $db * @param $id - * @param string $field - * @param mixed $table + * @param string $field + * @param mixed $table * * @return \Illuminate\Database\Query\Builder * @author : 713uk13m @@ -679,10 +706,10 @@ public function buildOperatorGreaterThanTo(Builder $db, $id, string $field = 'id /** * Function buildOperatorLessThanOrEqualTo * - * @param \Illuminate\Database\Query\Builder $db + * @param \Illuminate\Database\Query\Builder $db * @param $id - * @param string $field - * @param mixed $table + * @param string $field + * @param mixed $table * * @return \Illuminate\Database\Query\Builder * @author : 713uk13m @@ -702,10 +729,10 @@ public function buildOperatorLessThanOrEqualTo(Builder $db, $id, string $field = /** * Function buildOperatorGreaterThanOrEqualTo * - * @param \Illuminate\Database\Query\Builder $db + * @param \Illuminate\Database\Query\Builder $db * @param $id - * @param string $field - * @param mixed $table + * @param string $field + * @param mixed $table * * @return \Illuminate\Database\Query\Builder * @author : 713uk13m @@ -725,10 +752,10 @@ public function buildOperatorGreaterThanOrEqualTo(Builder $db, $id, string $fiel /** * Function buildOperatorSpaceShipTo * - * @param \Illuminate\Database\Query\Builder $db + * @param \Illuminate\Database\Query\Builder $db * @param $id - * @param string $field - * @param mixed $table + * @param string $field + * @param mixed $table * * @return \Illuminate\Database\Query\Builder * @author : 713uk13m @@ -748,10 +775,10 @@ public function buildOperatorSpaceShipTo(Builder $db, $id, string $field = 'id', /** * Function bindOrderBy * - * @param \Illuminate\Database\Query\Builder $db + * @param \Illuminate\Database\Query\Builder $db * @param $orderByField - * @param string $defaultField - * @param mixed $table + * @param string $defaultField + * @param mixed $table * * @return \Illuminate\Database\Query\Builder * @author : 713uk13m @@ -779,9 +806,9 @@ public function bindOrderBy(Builder $db, $orderByField, string $defaultField = ' /** * Function bindOrderByNoDefault * - * @param \Illuminate\Database\Query\Builder $db + * @param \Illuminate\Database\Query\Builder $db * @param $orderByField - * @param mixed $table + * @param mixed $table * * @return \Illuminate\Database\Query\Builder * @author : 713uk13m @@ -805,9 +832,9 @@ public function bindOrderByNoDefault(Builder $db, $orderByField, $table = null): /** * Function filterRecordIsActive * - * @param \Illuminate\Database\Query\Builder $db - * @param string $field - * @param mixed $table + * @param \Illuminate\Database\Query\Builder $db + * @param string $field + * @param mixed $table * * @return \Illuminate\Database\Query\Builder * @author : 713uk13m @@ -827,8 +854,8 @@ public function filterRecordIsActive(Builder $db, string $field = 'status', $tab /** * Function bindUniqueColumn * - * @param Collection $result - * @param string $column + * @param Collection $result + * @param string $column * User: 713uk13m * Copyright: 713uk13m * @return Collection