toDateTimeString(); } public function getColumns() { $columns = []; foreach (DB::select("describe {$this->table}") as $field) { $type = (!Str::contains($field->Type, '(')) ? $field->Type : substr($field->Type, 0, strpos($field->Type, '(')); $columns[$field->Field] = $type; } return $columns; } /** * filter request columns by fields * @param $request * @param array $additional * @return array */ public function filterRequestColumns($request, $except = []) { if (gettype($request) == "object") { if (method_exists($request, "input")) { $request = $request->input(); } else { abort(403); } } $columns = $this->getColumns(); $return = []; foreach ($request as $k => $v) { if (!in_array($k, array_keys($columns)) || in_array($k, $except)) { continue; } if ($k === "password") { if (!$v) { continue; } $v = Hash::make($v); } switch ($columns[$k]) { case "json": $v = json_encode($v, JSON_UNESCAPED_UNICODE); break; default: if (is_array($v)) { if (count($v) == count($v, 1)) { $v = implode($this->split, $v); } else { $v = json_encode($v, JSON_UNESCAPED_UNICODE); } } } $return[$k] = $v; } return $return; } /** * * @param string $tableName * @param array $multipleData * @return bool */ static function updateBatch($tableName = "", $multipleData = array()) { if ($tableName && !empty($multipleData)) { // column or fields to update $updateColumn = array_keys($multipleData[0]); $referenceColumn = $updateColumn[0]; //e.g id unset($updateColumn[0]); $whereIn = ""; $q = "UPDATE " . $tableName . " SET "; foreach ($updateColumn as $uColumn) { $q .= $uColumn . " = CASE "; foreach ($multipleData as $data) { $q .= "WHEN " . $referenceColumn . " = " . $data[$referenceColumn] . " THEN '" . $data[$uColumn] . "' "; } $q .= "ELSE " . $uColumn . " END, "; } foreach ($multipleData as $data) { $whereIn .= "'" . $data[$referenceColumn] . "', "; } $q = rtrim($q, ", ") . " WHERE " . $referenceColumn . " IN (" . rtrim($whereIn, ', ') . ")"; // Update return DB::update(DB::raw($q)); } else { return false; } } static function generateCurdRouter($controller, $prefix) { $router = app()->make('router'); $router->get($prefix, "{$controller}@index"); $router->get("{$prefix}/create", "{$controller}@create"); $router->post("{$prefix}/store", "{$controller}@store"); $router->get("{$prefix}/edit/{id?}", "{$controller}@edit"); $router->post("{$prefix}/update/{id?}", "{$controller}@update"); $router->post("{$prefix}/delete", "{$controller}@delete"); } /** * 判断是否有导出权限 */ public static function checkExport() { $userId = auth()->id(); $roleId = Role::where('name', 'like', '%导出%')->where('guard_name', 'admin')->value('id'); return DB::table('model_has_roles') ->where('role_id', $roleId) ->where('model_type', 'App\Admin') ->where('model_id', $userId) ->count(); } }