优化代码
parent
d07ae5203f
commit
aafefbdffa
|
@ -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 = [];
|
||||||
|
|
|
@ -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 查询字段
|
||||||
|
|
|
@ -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 条件查询案例
|
||||||
|
|
|
@ -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')) {
|
||||||
|
|
Loading…
Reference in New Issue