load(); } else { \Dotenv\Dotenv::createMutable(BASE_PATH)->load(); } } $host = getenv('DB_HOST') ?: '127.0.0.1'; $port = getenv('DB_PORT') ?: '3306'; $db = getenv('DB_NAME') ?: ''; $user = getenv('DB_USER') ?: ''; $pass = getenv('DB_PASSWORD') ?: ''; $dsn = "mysql:host={$host};port={$port};dbname={$db};charset=utf8mb4"; $pdo = new PDO($dsn, $user, $pass, [PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION]); $sqlFile = __DIR__ . '/dice_reward_config_tier_recommend_menu.sql'; $sql = file_get_contents($sqlFile); $sql = preg_replace('/--.*$/m', '', $sql); $parts = array_filter(array_map('trim', explode(';', $sql))); echo "执行: dice_reward_config_tier_recommend_menu.sql\n"; echo "数据库: {$db} @ {$host}\n\n"; foreach ($parts as $statement) { if ($statement === '') { continue; } $pdo->exec($statement); } $row = $pdo->query( "SELECT id, parent_id, name, slug FROM sa_system_menu WHERE slug = 'dice:reward_config:index:tierRecommend' AND type = 3 LIMIT 1" )->fetch(PDO::FETCH_ASSOC); if ($row) { echo "成功:已写入菜单权限\n"; echo " id={$row['id']} parent_id={$row['parent_id']} name={$row['name']} slug={$row['slug']}\n"; } else { $parent = $pdo->query( "SELECT id, name, path FROM sa_system_menu WHERE type = 2 AND (path = 'reward_config' OR component LIKE '%reward_config%') ORDER BY id ASC LIMIT 1" )->fetch(PDO::FETCH_ASSOC); if ($parent === false) { echo "失败:未找到「奖励配置」父菜单 (type=2),请先创建 reward_config 菜单\n"; exit(1); } echo "警告:权限 slug 未查到(可能已存在但未插入)。父菜单: id={$parent['id']} path={$parent['path']}\n"; exit(1); }