'array', ]; /** * 获取用户排序配置 * @param int $userid * @return array */ public static function getSorts(int $userid): array { $record = static::whereUserid($userid)->first(); if (!$record) { return self::normalizeSorts([]); } return self::normalizeSorts($record->sorts); } /** * 保存排序配置 * @param int $userid * @param array $sorts * @return static */ public static function saveSorts(int $userid, array $sorts): self { return static::updateOrCreate( ['userid' => $userid], ['sorts' => self::normalizeSorts($sorts)] ); } /** * 规范化排序数据 * @param mixed $sorts * @return array */ public static function normalizeSorts($sorts): array { $result = [ 'base' => [], 'admin' => [], ]; if (!is_array($sorts)) { return $result; } foreach (['base', 'admin'] as $group) { $list = $sorts[$group] ?? []; if (!is_array($list)) { $list = []; } $normalized = []; foreach ($list as $value) { if (!is_string($value)) { continue; } $value = trim($value); if ($value === '') { continue; } $normalized[] = $value; } $result[$group] = array_values(array_unique($normalized)); } return $result; } }