Хранение переменных в базе данных приложения Laravel


Как я использую таблицу настроек для управления переменными в базе данных приложения Laravel

Во время работы над приложениями Laravel, требующими большого количества настроек, у меня возникла проблема с хранением данных в базе данных.

Создавать ли мне новые таблицы каждый раз, когда я хочу сохранить настройки?

Добавлять ли новые столбцы в существующие таблицы для хранения этих переменных?

Тогда я придумал подход с таблицей настроек.

Это простой, но эффективный подход.

Я использую таблицу настроек для хранения всех деталей переменной.

Я могу запросить таблицу, чтобы получить текущее значение переменной

Я могу обновить таблицу, чтобы сохранить обновленное значение

php artisan make:model Setting -m
//This will create a Setting Model and settings_table migration
Вход в полноэкранный режим Выход из полноэкранного режима
<?php

namespace App;

use IlluminateDatabaseEloquentModel;

class Setting extends Model
{
    protected $fillable=['name','slug','value','description'];

    protected $casts=[
        'value'=>'array'
    ];
}
Войти в полноэкранный режим Выйти из полноэкранного режима

Таблица настроек имеет следующие столбцы

  • name : для хранения имени элемента настройки
  • slug : для хранения уникального имени элемента настройки для запроса
  • значение : для хранения значения элемента настройки
  • description : для хранения подробной информации об элементе настройки

столбец value приводится к массиву; это необходимо для работы со значениями параметров в форме массива.

Запрос таблицы

Таблица настроек запрашивается либо с помощью eloquent, либо с помощью DB facade

//array values
$approved_users=AppSetting::where('slug','approved_users')->first()->value ?? [];

//integer value
$percentage=AppSetting::where('slug','percentage')->first()->value ?? 20;

//boolean value
$use_old_process=DB::table('settings')->where('slug','use_old_process')->value('value') ?? 1;
Вход в полноэкранный режим Выход из полноэкранного режима

Заключение

Вот как я обрабатываю некоторые настройки в приложениях Laravel с большим количеством конфигураций. Это не стандарт, который нужно навязывать. Это решило мою проблему, может решить и вашу.

Если у вас есть лучший способ хранения переменных в приложении, пожалуйста, оставьте комментарий.

Будьте здоровы 😊

Оцените статью
devanswers.ru
Добавить комментарий