2 Commits

Author SHA1 Message Date
9b039b7abe 修复框架鉴权报错 2026-04-02 11:08:44 +08:00
0429cf62c4 优化CURD代码生成关联 2026-04-01 15:27:23 +08:00
4 changed files with 27 additions and 1 deletions

View File

@@ -581,6 +581,13 @@ class Crud extends Backend
private function parseModelMethods($field, &$modelData): void
{
// MySQL bigint/int 时间戳字段:显式声明为 integer避免 ThinkORM 自动时间戳写入 'now' 字符串
if (in_array($field['name'] ?? '', ['create_time', 'update_time', 'createtime', 'updatetime'], true)
&& in_array($field['type'] ?? '', ['int', 'bigint'], true)
) {
$modelData['fieldType'][$field['name']] = 'integer';
}
if (($field['designType'] ?? '') == 'array') {
$modelData['fieldType'][$field['name']] = 'json';
} elseif (!in_array($field['name'], ['create_time', 'update_time', 'updatetime', 'createtime'])

View File

@@ -18,6 +18,7 @@
list($where, $alias, $limit, $order) = $this->queryBuilder();
$res = $this->model
->withJoin($this->withJoinTable, $this->withJoinType)
->with($this->withJoinTable)
{%relationVisibleFields%}
->alias($alias)
->where($where)

View File

@@ -50,6 +50,7 @@ trait Backend
$res = $this->model
->field($this->indexField)
->withJoin($this->withJoinTable, $this->withJoinType)
->with($this->withJoinTable)
->alias($alias)
->where($where)
->order($order)

View File

@@ -204,7 +204,24 @@ if (!function_exists('get_controller_path')) {
if (count($parts) < 2) {
return $parts[0] ?? null;
}
return implode('/', array_slice($parts, 1, -1)) ?: $parts[1];
$segments = array_slice($parts, 1, -1);
if ($segments === []) {
return $parts[1] ?? null;
}
// ThinkPHP 风格段 game.Config -> game/config与 $request->controller 解析结果一致(否则权限节点对不上)
$normalized = [];
foreach ($segments as $seg) {
if (str_contains($seg, '.')) {
$dotPos = strpos($seg, '.');
$mod = substr($seg, 0, $dotPos);
$ctrl = substr($seg, $dotPos + 1);
$normalized[] = strtolower($mod);
$normalized[] = strtolower(preg_replace('/([a-z])([A-Z])/', '$1_$2', $ctrl));
} else {
$normalized[] = strtolower(preg_replace('/([a-z])([A-Z])/', '$1_$2', $seg));
}
}
return implode('/', $normalized);
}
}