PHPackages                             bleuren/laravel-settings - PHPackages - PHPackages  [Skip to content](#main-content)[PHPackages](/)[Directory](/)[Categories](/categories)[Trending](/trending)[Leaderboard](/leaderboard)[Changelog](/changelog)[Analyze](/analyze)[Collections](/collections)[Log in](/login)[Sign up](/register)

1. [Directory](/)
2. /
3. [Database &amp; ORM](/categories/database)
4. /
5. bleuren/laravel-settings

ActiveLibrary[Database &amp; ORM](/categories/database)

bleuren/laravel-settings
========================

A package to manage application settings through a database in Laravel applications.

v1.1.0(11mo ago)0537↓100%MITPHPPHP ^8.3

Since May 20Pushed 10mo ago1 watchersCompare

[ Source](https://github.com/bleuren/laravel-settings)[ Packagist](https://packagist.org/packages/bleuren/laravel-settings)[ Docs](https://github.com/bleuren/laravel-settings)[ RSS](/packages/bleuren-laravel-settings/feed)WikiDiscussions main Synced 1mo ago

READMEChangelog (3)Dependencies (2)Versions (4)Used By (0)

Laravel Settings
================

[](#laravel-settings)

**一個現代化、高性能的 Laravel 設定管理套件**

*透過資料庫存儲應用設定，支援智能緩存、自定義模型和依賴注入*

---

✨ 功能特點
------

[](#-功能特點)

- 🗄️ **資料庫存儲** - 在資料庫中安全存儲設定，支援複雜資料類型
- ⚡ **智能緩存** - 多層緩存策略：Laravel 緩存 + 記憶化緩存
- 🔧 **Contract 驅動** - 基於 `SettingRepository` Contract，支援依賴注入
- 🎯 **自定義模型** - 完全支援自定義 Eloquent 模型和欄位
- 📦 **批量操作** - 高效的批量設定操作，支援資料庫事務
- 🚀 **預載入功能** - 可配置的常用設定預載入，提升性能
- 🛠️ **命令行工具** - 提供緩存管理和維護命令
- 🧪 **完整測試** - 106 個測試，229 個斷言，確保穩定性
- 📋 **Laravel 慣例** - 完全符合 Laravel 設計模式和最佳實踐

📋 系統需求
------

[](#-系統需求)

- PHP 8.3+
- Laravel 11.0+ 或 12.0+

🚀 安裝
----

[](#-安裝)

透過 Composer 安裝套件：

```
composer require bleuren/laravel-settings
```

發布並執行遷移：

```
php artisan vendor:publish --tag=laravel-settings-migrations
php artisan migrate
```

（可選）發布配置文件：

```
php artisan vendor:publish --tag=laravel-settings-config
```

📖 基本使用
------

[](#-基本使用)

### Facade 方式（推薦）

[](#facade-方式推薦)

```
use Bleuren\LaravelSetting\Facades\Setting;

// 獲取設定值
$appName = Setting::get('app.name', 'Default App');

// 設置設定值
Setting::set('app.name', 'My Application', '應用程式名稱');

// 批量設置
Setting::setMany([
    'app.name' => 'My App',
    'app.theme' => 'dark',
    'app.timezone' => 'Asia/Taipei',
    'maintenance.mode' => false
], '應用程式基本設定');

// 檢查設定是否存在
if (Setting::has('app.name')) {
    // 執行相關邏輯
}

// 刪除設定
Setting::remove('old.setting');

// 搜索設定
$appSettings = Setting::search('app.%');

// 獲取所有設定
$allSettings = Setting::all();
```

### 輔助函數

[](#輔助函數)

```
// 簡潔的獲取方式
$appName = setting('app.name', 'Default App');
$theme = setting('app.theme');
```

### 依賴注入方式

[](#依賴注入方式)

```
use Bleuren\LaravelSetting\Contracts\SettingRepository;

class UserController extends Controller
{
    public function __construct(
        private SettingRepository $settings
    ) {}

    public function updateProfile(Request $request)
    {
        // 使用注入的設定服務
        $defaultTheme = $this->settings->get('user.default_theme', 'light');

        // 更新使用者偏好設定
        $this->settings->setMany([
            'user.theme' => $request->theme,
            'user.language' => $request->language,
        ], '使用者偏好設定');
    }
}
```

🎨 自定義模型
-------

[](#-自定義模型)

### 創建自定義設定模型

[](#創建自定義設定模型)

```
