询单改造

This commit is contained in:
mzl
2025-07-22 15:13:27 +08:00
parent 5e395eceae
commit e5ab965e65
12 changed files with 1103 additions and 81 deletions
+33 -75
View File
@@ -152,43 +152,22 @@ class CrudUtil
* @return Model
* @throws BusinessException
*/
// public static function findByPk(string $modelClass, $id, array $with = []): Model
// {
// $m = $modelClass::with($with)->find($id);
// if (!$m) {
// throw new BusinessException("记录 ID={$id} 不存在", 404);
// }
// return $m;
// }
public static function findByPk(string $modelClass, $id, array $with = []): Model
{
$m = $modelClass::with($with)->find($id);
if (!$m) {
throw new BusinessException("记录 ID={$id} 不存在", 404);
}
return $m;
}
/**
* 任意条件单条查询,支持 dataLimit
*
* @param string $modelClass
* @param array $where
* @param array $with
* @param array $dataLimit
* @param Builder $query
* @return Model
* @throws BusinessException
*/
// public static function findOneBy(
// string $modelClass,
// array $where,
// array $with = [],
// array $dataLimit = []
// ): Model {
// $config = compact('modelClass');
// $config['model'] = $modelClass;
// $config['where'] = $where;
// $config['with'] = $with;
// $config['dataLimit'] = $dataLimit;
// $m = self::buildQuery($config)->first();
// if (!$m) {
// throw new BusinessException("未找到符合条件的记录", 404);
// }
// return $m;
// }
public static function findOneBy(Builder $q): Model
{
return $q->first();
@@ -225,43 +204,32 @@ class CrudUtil
* @return Model
* @throws BusinessException
*/
// public static function updateByPk(
// string $modelClass,
// $id,
// array $data,
// array $dataLimit = []
// ): Model {
// /** @var Model $m */
// $m = $modelClass::find($id);
// if (!$m) {
// throw new BusinessException("记录 ID={$id} 不存在", 404);
// }
// // dataLimit 校验
// if (!empty($dataLimit)) {
// self::applyDataLimitOnMutate($m, $dataLimit, $data);
// }
// $m->fill($data)->save();
// return $m;
// }
public static function updateByPk(
string $modelClass,
$id,
array $data,
array $dataLimit = []
): Model {
/** @var Model $m */
$m = $modelClass::find($id);
if (!$m) {
throw new BusinessException("记录 ID={$id} 不存在", 404);
}
// dataLimit 校验
if (!empty($dataLimit)) {
self::applyDataLimitOnMutate($m, $dataLimit, $data);
}
$m->fill($data)->save();
return $m;
}
/**
* 非主键条件更新(批量),支持 dataLimit
*
* @param string $modelClass
* @param array $where
* @param Builder $query
* @param array $data
* @param array $dataLimit
* @return int 受影响行数
*/
// public static function updateBy(
// string $modelClass,
// array $where,
// array $data,
// array $dataLimit = []
// ): int {
// $config = ['model'=>$modelClass, 'where'=>$where, 'dataLimit'=>$dataLimit];
// return self::buildQuery($config)->update($data);
// }
public static function updateBy(Builder $q, array $data): int
{
return $q->update($data);
@@ -274,27 +242,17 @@ class CrudUtil
* @param array $ids
* @return int 删除条数
*/
// public static function deleteByPk(string $modelClass, array $ids): int
// {
// return $modelClass::destroy($ids);
// }
public static function deleteByPk(string $modelClass, array $ids): int
{
return $modelClass::destroy($ids);
}
/**
* 非主键条件删除,支持 dataLimit
*
* @param string $modelClass
* @param array $where
* @param array $dataLimit
* @param Builder $query
* @return int 删除条数
*/
// public static function deleteBy(
// string $modelClass,
// array $where,
// array $dataLimit = []
// ): int {
// $config = ['model'=>$modelClass, 'where'=>$where, 'dataLimit'=>$dataLimit];
// return self::buildQuery($config)->delete();
// }
public static function deleteBy(Builder $q): int
{
return $q->delete();