优化代码

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->case5();
$repository->case4();
//$api = config('juhe_api.ip');
//$options = [];

View File

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

View File

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

View File

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