Todos los artículos

Ver relaciones de terceros en el comando model:show - Ahora disponible en Laravel 11.11

Julian Beaujardin
Julian Beaujardin Reference: Laravel News June 18th, 2024

Esta semana, el equipo de Laravel lanzó la versión 11.11, con soporte para relaciones de terceros en el comando model:show, nuevos métodos para Collection, nuevos eventos de caché y más.

Nuevos métodos before y after en la clase Collection

Ryuta Hamasaki contribuyó con los métodos before y after para las instancias de Collection y LazyCollection.

Aquí tienes ejemplos del método before según la descripción de la solicitud de extracción:

$collection = collect([1, 2, 3, 4, 5, 'name' => 'taylor', 'framework' => 'laravel']);

$collection->before(2) // 1
$collection->before('taylor') // 5
$collection->before('laravel') // 'taylor'
$collection->before(fn ($value) => $value > 4) // 4
$collection->before(fn ($value) => ! is_numeric($value)) // 5
$collection->before(1) // null
$collection->before('not found') // null

Aquí tienes ejemplos del método after según la descripción de la solicitud de extracción:

$collection = collect([1, 2, 3, 4, 5, 'name' => 'taylor', 'framework' => 'laravel']);

$collection->after(1) // 2
$collection->after('taylor') // 'laravel'
$collection->after(fn ($value) => $value > 4) // 'taylor'
$collection->after(fn ($value) => ! is_numeric($value)) // 'laravel'
$collection->after('laravel') // null
$collection->after('not found') // null

Eventos de caché

Alex Bouma contribuyó con nuevos eventos de caché al framework a los que las aplicaciones pueden suscribirse:

use Illuminate\Cache\Events\ForgettingKey;

use Illuminate\Cache\Events\KeyForgetFailed;

use Illuminate\Cache\Events\KeyWriteFailed;
// Two public properties: `$this->value` and `$this->seconds`

use Illuminate\Cache\Events\RetrievingKey;

use Illuminate\Cache\Events\RetrievingManyKeys;
// One public property: `$this->keys`

use Illuminate\Cache\Events\WritingKey
// Two public properties: `$this->value` and `$this->seconds`

use Illuminate\Cache\Events\WritingManyKeys;
// Three public properties:
// `$this->keys`, `$this->values` and `$this->seconds`

Soporte de Relaciones con Terceros en commando model:show

Jonas Staudenmeir contribuyó con la capacidad de incluir relaciones modelo de paquetes de terceros en el comando model:show:

El comando model:show encuentra las relaciones de un modelo analizando el código de sus métodos y buscando $this->hasMany( etc. Esto no detecta relaciones de terceros (como [eloquent-has-many-deep](https: //github.com/staudenmeir/eloquent-has-many-deep)). Podríamos construir un sistema completo para que los paquetes se conecten, pero eso sería excesivo, en mi opinión, podemos verificar el tipo de retorno del método y ver si. es una subclase de la clase Relación base. No todo el mundo usa tipos de retorno, pero espero que la mayoría lo haga hoy en día.

Puede obtener más información sobre esta adición en el Pull Request 51807.

Captador de ID de sesión

Tim MacDonald contribuyó con el método Session::id() a la facade Session:

Session::id();

// You can still use `getId()` too:
Session::getId();

Zona horaria y configuración regional agregadas al comando about

Amir Khalife Soltani contribuyó a agregar valores de Locale y Timezone al comando about de Laravel. Ahora puede determinar rápidamente cuál es la configuración regional y la zona horaria de un vistazo junto con otra información importante del entorno.

422 Código de estado de contenido no procesable

Dwight Watson contribuyó con actualizaciones al método del código de estado para determinar un código de estado 422, que ahora se conoce como Contenido no procesable 422 en lugar de Entidad no procesable. La forma en que interactúas al afirmar un código de estado 422 no ha cambiado:

$response = $this->postJson('/example', []);
$response->assertUnprocessable();

Ver RFC 9110: HTTP Semantics y Pull Request #51815 para detalles.

Agregar método Relation::getMorphAlias()

Dennis Koch contribuyó con un método Relation::getMorphAlias()

Dado que existe una relación::getMorphedModel(), creo que sería beneficioso agregar el getMorphAlias ​​inverso.

Esta adición es particularmente beneficiosa para las pruebas, ya que simplifica las afirmaciones con $this->assertDatabaseHas. Los desarrolladores ya no necesitan recordar el alias de transformación utilizado:

$this->assertDatabaseHas('taskables', [
    'taskable_type' => Relation::getMorphAlias(Document::class),
    'taskable_id' => $mitigation->id,
    'task_id' => $taskB->id
]);

Notas de la Versión

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