Todos los artículos

Utilice un Closure con updateOrInsert() en Laravel 11.10

Julian Beaujardin
Julian Beaujardin June 5th, 2024

Esta semana, el equipo de Laravel lanzó la versión 11.10, con la capacidad de pasar un callback a updateOrInsert, soporte para modelos eliminados temporalmente con enlace de modelo de ruta explícito y más.

Permitir pasar un callback a updateOrInsert()

Mark Eriksson contribuyó con la capacidad de pasar un callback como segundo argumento al método de creación de consultas updateOrInsert(). Dentro de la devolución de llamada, se pasa la variable booleana $exists para que puedas escribir lógica para actualizar columnas específicas en función de si el registro existe o no:

DB::table('users')->updateOrInsert(
  ['user_id' => $user_id],
  function ($exists) use ($data) {
    if ($exists) {
      return [
        'name' => $data['name'],
        'email' => $data['email'],
      ];
    }

    return [
      'name' => $data['name'],
      'email' => $data['email'],
      'optional_column' => $data['foobar'],
    ];
  }
);

Ver Pull Request #51566 para más detalles.

Admitir modelos eliminados temporalmente cuando se utiliza el enlace de modelo de ruta explícito

Graham Bradley agregó soporte para modelos eliminados temporalmente cuando se usa el enlace explícito del modelo de ruta.

Este PR permite la resolución de modelos eliminados temporalmente cuando se utiliza la función de vinculación explícita de modelo de ruta de Laravel. Permite a los desarrolladores utilizar un enlace explícito de modelo de ruta sin tener que personalizar la lógica de resolución cuando se trata de modelos eliminados temporalmente. Para hacerlo, utiliza el mismo método withTrashed() como enlace implícito..

// Before
Route::get('/users/{user}', ...);
Route::bind('user', function (string $value) {
    return User::where('id', $value)->withTrashed()->firstOrFail();
});

// After
Route::get('/users/{user}', ...)->withTrashed();
Route::model('user', User::class);

Ver Pull Request #51651 para más detalles.

Permitir configuración de reenvío de clave API en la configuración de Mailer

@riasvdv contribuyó a configurar la clave API Reenviar directamente en la configuración del correo en lugar de solo en la configuración de servicios. Consulte la Solicitud de extracción n.º 51618 para obtener más detalles.

Notas de la Versión

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