init
This commit is contained in:
@@ -0,0 +1,66 @@
|
||||
<?php
|
||||
|
||||
namespace plugin\admin\app\controller;
|
||||
|
||||
/**
|
||||
* 需要数据权限的 Controller 使用此 Trait
|
||||
* 要求 Controller 中有 $this->repository 属性(BaseRepository 子类)
|
||||
* 重写 doSelect / doUpdate / doDelete,走 Repository 的 scopedQuery
|
||||
*/
|
||||
trait WithDataPermission
|
||||
{
|
||||
/**
|
||||
* 查询 - 以 repository->scopedQuery() 为基础,注入 withDataPermission
|
||||
*/
|
||||
protected function doSelect(array $where, ?string $field = null, string $order = 'desc')
|
||||
{
|
||||
$model = $this->repository->scopedQuery();
|
||||
foreach ($where as $column => $value) {
|
||||
if (is_array($value)) {
|
||||
if ($value[0] === 'like' || $value[0] === 'not like') {
|
||||
$model = $model->where($column, $value[0], "%$value[1]%");
|
||||
} elseif (in_array($value[0], ['>', '=', '<', '<>'])) {
|
||||
$model = $model->where($column, $value[0], $value[1]);
|
||||
} elseif ($value[0] == 'in' && !empty($value[1])) {
|
||||
$valArr = is_string($value[1]) ? explode(",", trim($value[1])) : $value[1];
|
||||
$model = $model->whereIn($column, $valArr);
|
||||
} elseif ($value[0] == 'not in' && !empty($value[1])) {
|
||||
$valArr = is_string($value[1]) ? explode(",", trim($value[1])) : $value[1];
|
||||
$model = $model->whereNotIn($column, $valArr);
|
||||
} elseif ($value[0] == 'null') {
|
||||
$model = $model->whereNull($column);
|
||||
} elseif ($value[0] == 'not null') {
|
||||
$model = $model->whereNotNull($column);
|
||||
} elseif ($value[0] !== '' || $value[1] !== '') {
|
||||
$model = $model->whereBetween($column, $value);
|
||||
}
|
||||
} else {
|
||||
$model = $model->where($column, $value);
|
||||
}
|
||||
}
|
||||
if ($field) {
|
||||
$model = $model->orderBy($field, $order);
|
||||
}
|
||||
return $model;
|
||||
}
|
||||
|
||||
/**
|
||||
* 更新 - 带数据权限查找记录
|
||||
*/
|
||||
protected function doUpdate($id, $data)
|
||||
{
|
||||
$model = $this->repository->findWithPermission($id);
|
||||
foreach ($data as $key => $val) {
|
||||
$model->{$key} = $val;
|
||||
}
|
||||
$model->save();
|
||||
}
|
||||
|
||||
/**
|
||||
* 删除 - 带数据权限
|
||||
*/
|
||||
protected function doDelete(array $ids)
|
||||
{
|
||||
$this->repository->deleteWithPermission($ids);
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user