Cada vez que tengo que trabajar en una aplicación desde cero, de las primeras cosas que preparo es un sistema para almacenar opciones, de forma que sea fácil generar y obtener configuraciones útiles para el sistema.
Para no tener que escribir de nuevo cada vez está funcionalidad e inspirado por un paquete que encontré similar, decidí generar un paquete propio que funcione de la misma forma en que yo trabajo.
Se instala normalmente con composer:
composer install mxrck/laravel-dboptions
Una vez instalado basta con utilizar el facade o el helper para guardar u obtener opciones del sistema
// Obtener una variable del sistema con un valor por defecto (en caso de no existir) $somekey = Options::get( 'somekey', 'default value' ); // O usando el facade $somekey = option('somekey');
De igual forma es posible crear opciones para otros modelos, como un usuario por ejemplo, estos son llamados «context» y es posible hacer fallback a una opción del sistema o un valor por defecto, tu decides:
$user = User::find(1); // obtenemos un usuario // Opción del sistema, supongamos un color por ejemplo $color = option('color', 'blue'); // Color puede ser el guardado o blue en caso de que no exista ninguno guardado $user_color = $user->option('color', 'red'); // Nos devuelve el color del usuario o red en caso de que no haya ninguno guardado /* Si quisieramos que en caso de no encontrar un color para el usuario guardado se usara el guardado por el sistema solo debemos hacer fallback: */ $user_color = $user->optionFallback('color', 'red'); /* Esta línea actuará de la siguiente forma: Buscará una la opción "color" del usuario, en caso de no encontrarla devolverá la opción del sistema "color" y en caso de que no exista una opción color en el sistema guardada devolverá "red" como valor por defecto */
El paquete tiene más opciones y formas de utilizarse, pueden encontrarlo en el siguiente enlace: