Carregamento Automático de Relações no Laravel 12.8

Laravel Notícias de tecnologia PHP Webdev
Carregamento Automático de Relações no Laravel 12.8

A equipe do Laravel lançou a versão 12.8.0, que inclui carregamento automático de relações ansiosas, criação de uma instância de coleção a partir de uma string JSON e muito mais:

Carregamento Automático de Relação

Serhii Litvinchuk contribuiu com o carregamento automático de relacionamento:

Em projetos grandes, pode ser difícil rastrear e especificar manualmente quais relações devem ser carregadas antecipadamente, especialmente se essas relações estiverem profundamente aninhadas ou forem usadas dinamicamente. Portanto, o carregamento automático de relações pode ser útil.

// instead of this
 
$projects->load([
'client.owner.details',
'client.customPropertyValues',
'clientContact.customPropertyValues',
'status',
'company.statuses',
'posts.authors.articles.likes',
'related.statuses'
]);
 
 
// We can use this
$projects->withRelationshipAutoloading();

Aqui está outro exemplo da descrição da solicitação de pull:

$orders = Order::all()->withRelationshipAutoloading();
 
foreach ($orders as $order) {
echo $order->client->owner->company->name;
}
 
// automatic calls:
// $orders->loadMissing('client');
// $orders->loadMissing('client.owner');
// $orders->loadMissing('client.owner.company');

Você pode habilitar o carregamento automático entre modelos usando o seguinte método estático:

Model::automaticallyEagerLoadRelationships();

Crie uma coleção a partir de JSON

@DarkGhostHunter contribuiu com um fromJson método para a classe Collection, que você pode usar para criar uma coleção a partir de uma string JSON:

// Before
$collection = new Collection(json_decode($json, true));
 
// After
$collection = Collection::fromJson($json);

O fromJson() método também suporta os argumentos de profundidade e sinalizadores que você pode passar para json_decode() :

$collection = Collection::fromJson(json: $json, flags: JSON_THROW_ON_ERROR);

"Criar muitas" variantes de relações HasOneOrMany

Philip Iezzi contribuiu forceCreateMany() com forceCreateManyQuietly() métodos Eloquent para o HasOneOrMany relacionamento:

$post->comments()->forceCreateMany($data);
$post->comments()->forceCreateManyQuietly($data);

Aqui está um exemplo da descrição da solicitação de pull , que exigiria a criação forçada de modelos individuais:

// Before
collect($comments)
->map(fn (array $comment) => [
...$comment,
// override some attributes here
])
->each(fn (array $comment) => $post->comments()->forceCreateQuietly($comment));
 
// After
collect($comments)
->map(fn (array $comment) => [
...$comment,
// override some attributes here
])
->pipe($post->comments()->forceCreateManyQuietly(...));

Notas de lançamento

Você pode ver a lista completa de novos recursos e atualizações abaixo, além das diferenças entre as versões 12.7.0 e 12.8.0, no GitHub. As seguintes notas de lançamento foram retiradas diretamente do changelog :

v12.8.0