/**
* 公告的where
* @param $admin
* @param string $like 查詢的欄位
* @param string $name 值
* @return array
*/
public function commonWhere($admin, $like = '', $name = '')
{
$where = [];
if (isset($name) && !empty($name)) {
$where[] = [$like, 'like', '%' . $name . '%'];
}
return $where;
}
/**
* 判斷時間並返回
* @param $data
* @return array
*/
public function timeStr($data)
{
return [
'start' => isset($data['start']) ? $data['start'] . ' ' . '00:00:00' : '0000-00-00 00:00:00',
'end' => isset($data['end']) ? $data['end'] . ' ' . '23:59:59' : date('Y-m-d H:i:s')
];
}
/**
* @param $model 查詢的模型
* @param $post 資料
* @param $field_name 要查詢的欄位名
* @param $del 是否軟刪除,傳軟刪除欄位例如:admin_is_del
* @param $add_time 新增時間
* @param bool $isOtherModel 是否關聯其他模型
* @param array $models 傳入要關聯的模型
* @return string | array
* @throws \Exception
*/
public function commonIndex($model, $post, $field_name, $del, $add_time, $isOtherModel = false, $models = [])
{
$admin = $this->getThisAdmin($post['token']);
// where條件
$post[$field_name] = isset($post[$field_name]) ? $post[$field_name] : '';
$where = $this->commonWhere($admin, $field_name, $post[$field_name]);
// 獲取時間
$date = $this->timeStr($post);
// 當前頁
$post['page'] = isset($post['page']) ? $post['page'] : 1;
// 是否查詢所有資料
$post['is_all'] = isset($post['is_all']) ? $post['is_all'] : 0;
// 指定每頁條數
$post['nums'] = isset($post['nums']) ? $post['nums'] : 15;
if ($isOtherModel) { // 關聯模型
if (empty($models)) {
throw new \Exception('異常操作');
}
if($post['is_all']) {
$data = $model->with($models)
->whereBetween($add_time, [$date['start'], $date['end']])
->where($where)
->get()
->toArray();
$arr['data'] = $data;
}else{
$arr = $model->with($models)
->whereBetween($add_time, [$date['start'], $date['end']])
->where($where)
->paginate($post['nums'],['*'],$post['page'],$post['page'])
->toArray();
if (empty($arr['data'])) {
return '暫無資料';
}
}
} else {
if($post['is_all']) {
$data = $model
->whereBetween($add_time, [$date['start'], $date['end']])
->where($where)
->get()
->toArray();
$arr['data'] = $data;
}else{
$arr = $model
->whereBetween($add_time, [$date['start'], $date['end']])
->where($where)
->paginate($post['nums'],['*'],$post['page'],$post['page'])
->toArray();
if (empty($arr['data'])) {
return '暫無資料';
}
}
}
return $arr;
}
示例
public function index(array $post)
{
return $this->commonIndex($this->model, $post, 'xxxx', 'xxxx', 'xxxx');
}
還可以優化,本人比較懶,就懶得了
本作品採用《CC 協議》,轉載必須註明作者和本文連結