Ver relaciones de terceros en el comando model:show - Ahora disponible en Laravel 11.11
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