Todos los artículos

Enumeraciones sin respaldo en consultas de bases de datos y un método de arranque withSchedule() en Laravel 11.1

Julian Beaujardin
Julian Beaujardin Reference: Laravel News March 26th, 2024

Esta semana, el equipo de Laravel lanzó la versión 11.1 con un método de arranque withSchedule, enumeraciones sin respaldo en el generador de consultas, opciones de administración de listas SES y más. Laravel 11.1 es la primera versión menor desde la GA de Laravel 11, lanzada a principios de este mes.

Agregar withSchedule al arranque de la aplicación

Nuno Maduro contribuyó con un método withSchedule al archivo bootstrap/app.php:

->withSchedule(function ($schedule) {
    $schedule->command('backup:database')->daily();
})

Opciones de gestión de listas agregadas a SES Mail Transport

Ariful Alam contribuyó con la capacidad de utilizar las funciones de administración de suscripciones mientras se utiliza el transporte de correo de SES. Puede definir el siguiente encabezado en el método headers() de un mensaje de correo:

/**
 * Get the message headers.
 */
public function headers(): Headers
{
    return new Headers(
        text: [
            'X-Ses-List-Management-Options' => 'contactListName=MyContactList;topicName=MyTopic',
        ],
    );
}

Este encabezado de SES habilita automáticamente enlaces para cancelar la suscripción en cada correo electrónico saliente en el que especifica la lista de contactos y el tema. Si un usuario se da de baja, SES no permite el envío de correo electrónico. Consulte la documentación del controlador SES de Laravel para obtener más detalles.

Aceptar enumeraciones no respaldadas en consultas de bases de datos

Giorgio Balduzzi contribuyó con la capacidad de utilizar enumeraciones no respaldadas en consultas de bases de datos. Ya es posible lanzar atributos de Eloquent. Sin embargo, no fue posible utilizar enumeraciones sin respaldo con el generador de consultas.

enum Status
{
    case Active;
    case Archive;
}

class User extends Model
{
  protected $casts = [
    'status' => Status::class,
  ];
}


User::where('status', Status::Active)->get();
User::update([ 'status' => Status::Archive]);

Las consultas convierten automáticamente cada caso de enumeración no respaldado en el valor del nombre.

Rasgo condicional agregado al contexto

Michael Nabil contribuyó a agregar el rasgo Condicional a la nueva Fachada de contexto de Laravel. Esto permite establecer el contexto de forma condicional y también definir valores predeterminados cuando sean falsos o verdaderos, según el método condicional:

Context::when(
    auth()->user()->isAdmin(),
    fn ($context) => $context->add('user', ['key' => 'other data', ...auth()->user()]),
    fn ($context) => $context->add('user', auth()->user()),
);

Notas de la Versión

Puede ver la lista completa de nuevas funciones y actualizaciones a continuación y la diferencia entre 11.0.0 y 11.1.0 en GitHub. Las siguientes notas de la versión provienen directamente del registro de cambios