优化代码

main
gzydong 2021-08-29 23:01:42 +08:00
parent d07ae5203f
commit aafefbdffa
4 changed files with 49 additions and 31 deletions

View File

@ -37,7 +37,7 @@ class TestCommand extends HyperfCommand
{ {
$repository = di()->get(ExampleRepository::class); $repository = di()->get(ExampleRepository::class);
$repository->case5(); $repository->case4();
//$api = config('juhe_api.ip'); //$api = config('juhe_api.ip');
//$options = []; //$options = [];

View File

@ -45,7 +45,7 @@ abstract class BaseRepository
use RepositoryTrait; use RepositoryTrait;
/** /**
* 获取单条数据 * 查询单条数据
* *
* @param array $where 查询条件 * @param array $where 查询条件
* @param string[] $fields 查询字段 * @param string[] $fields 查询字段
@ -66,7 +66,7 @@ abstract class BaseRepository
} }
/** /**
* 获取多条数据 * 查询多条数据
* *
* @param array $where 查询条件 * @param array $where 查询条件
* @param string[] $fields 查询字段 * @param string[] $fields 查询字段
@ -85,7 +85,7 @@ abstract class BaseRepository
} }
/** /**
* 分页查询数据 * 查询分页数据
* *
* @param array $where 查询条件 * @param array $where 查询条件
* @param array $fields 查询字段 * @param array $fields 查询字段
@ -115,7 +115,7 @@ abstract class BaseRepository
} }
/** /**
* 批量更新数据 * 根据条件批量更新数据
* *
* @param array $where 查询条件 * @param array $where 查询条件
* @param array $values 更新字段 * @param array $values 更新字段
@ -132,14 +132,12 @@ abstract class BaseRepository
$when = ''; $when = '';
foreach ($item['filter'] as $k => $v) { foreach ($item['filter'] as $k => $v) {
$when .= sprintf(" when '%s' then '%s'", $k, $v); $when .= sprintf("when '%s' then '%s' ", $k, $v);
} }
$key = $item['field'] ?? $field; $key = $item['field'] ?? $field;
$string = "case $key {$when} else '{$item['default']}' end"; $data[$field] = Db::raw("case $key {$when} else '{$item['default']}' end");
$data[$field] = Db::raw($string);
} }
if (empty($data)) return 0; if (empty($data)) return 0;
@ -151,15 +149,15 @@ abstract class BaseRepository
* 删除数据 * 删除数据
* *
* @param array $where 删除的条件 * @param array $where 删除的条件
* @return array * @return int
*/ */
final public function delete(array $where): array final public function delete(array $where): int
{ {
return $this->buildWhere($where)->delete(); return $this->buildWhere($where)->delete();
} }
/** /**
* 打印查询 sql * 打印查询 SQL
* *
* @param array $where 查询条件 * @param array $where 查询条件
* @return string * @return string
@ -170,7 +168,7 @@ abstract class BaseRepository
} }
/** /**
* 原生 sql 查询 * 原生 SQL 查询
* *
* @param string $query * @param string $query
* @param array $bindings * @param array $bindings
@ -183,7 +181,7 @@ abstract class BaseRepository
} }
/** /**
* 通过 model 读取分页信息 * 通过 Model 读取分页数据
* *
* @param Builder $model 查询 Model * @param Builder $model 查询 Model
* @param array $fields 查询字段 * @param array $fields 查询字段

View File

@ -143,6 +143,26 @@ class ExampleRepository extends BaseRepository
// 'gender' => 2, // 'gender' => 2,
// 'updated_at' => date('Y-m-d H:i:s'), // 'updated_at' => date('Y-m-d H:i:s'),
// ]); // ]);
// 批量更新数据
// $this->batchUpdate([
// 'id:gt' => 2054
// ], [
// 'email' => '', // 不使用条件判断,默认更新
// 'gender' => [
// 'field' => 'id',//判断的字段,可选(不设置默认使用当前字段)
// 'default' => 0, // 默认字段值
// 'filter' => [ // 数据判断
// '2054' => 1,
// '2055' => 2,
// ]
// ],
// ]);
// 批量删除数据
// $this->delete([
// 'id' => 4241
// ]);
} }
public function case5() public function case5()
@ -187,21 +207,11 @@ class ExampleRepository extends BaseRepository
// 原生 SQL 查询 // 原生 SQL 查询
// $this->sql('SELECT * FROM `lar_users` WHERE id = ?', [2054]); // $this->sql('SELECT * FROM `lar_users` WHERE id = ?', [2054]);
}
// 批量更新数据 public function other()
// $this->batchUpdate([ {
// 'id:gt' => 2054 $model = $this->getModel();
// ], [
// 'email' => '', // 不使用条件判断,默认更新
// 'gender' => [
// 'field' => 'id',//判断的字段,可选(不设置默认使用当前字段)
// 'default' => 0, // 默认字段值
// 'filter' => [ // 数据判断
// '2054' => 1,
// '2055' => 2,
// ]
// ],
// ]);
} }
// where 条件查询案例 // where 条件查询案例

View File

@ -116,6 +116,16 @@ trait RepositoryTrait
$this->model = $model; $this->model = $model;
} }
/**
* 获取 Model
*
* @return Model
*/
final public function getModel(): Model
{
return $this->model;
}
/** /**
* 调用 model 的方法 * 调用 model 的方法
* *
@ -142,11 +152,11 @@ trait RepositoryTrait
} }
/** /**
* 获取新的查询 Model * 获取新的查询构造器
* *
* @return Builder * @return Builder
*/ */
protected function getNewModel(): Builder protected function getQuery(): Builder
{ {
return $this->model->newQuery(); return $this->model->newQuery();
} }
@ -159,7 +169,7 @@ trait RepositoryTrait
*/ */
final public function buildWhere(array $where = []): Builder final public function buildWhere(array $where = []): Builder
{ {
$model = $this->getNewModel(); $model = $this->getQuery();
// 处理排序数据 // 处理排序数据
if ($order = Arr::pull($where, 'order by')) { if ($order = Arr::pull($where, 'order by')) {