17, nov 2022

Laravel 9.40

Essa semana a equipe do Laravel fez a liberação da versão 9.40 do framework com novidades bem legais!

Lottery Helper

Esse aqui achei muito interessante! Tim MacDonald fez essa contribuição bastante peculiar que nos dá a possibilidade de basicamente correr um “sorteio” através de uma chance x entre n possibilidades de sucesso ou falha.

Exemplo que é mostrado no Pull Request:

Lottery::odds(1, 20)
    ->winner(fn () => $user->group = 'treatment')
    ->loser(fn () => $user->group = 'control')
    ->choose();

Ou ainda no exemplo seguinte:

DB::whenQueryingForLongerThan(
    Interval::seconds(2),
    Lottery::odds(1, 100)->winner(fn () => report('DB queries exceeded 2 seconds'))
);

Aqui a justificativa é que, mesmo que a query seja maior que 2 segundos, apenas na change de 1 pra 100 que vai fazer o report desse ocorrido, evitando assim encher o arquivo de log da mesma coisa.

Eu vejo esse novo helper como algo que pode ajudar nos momentos que queremos fazer algo de forma aleatória por qualquer motivo que seja. Quero ver se encontro uma change de usar isso no dia-a-dia e postar aqui posteriormente.

Comando do artisan model:show agora mostra também os observers

Essa é outra novidade que também será muito útil! Mike Healy contribuiu adicionando a opção de mostrar os observers ligados a um model quando rodamos o comando `php artisan model:show`.

Observers agora são mostrados no comando model:show

Validation agora com regras para uppercase e lowercase

Tim MacDonald adicionou a opção de termos uma regra de validação para garantir que uma string está em lowercase, em contra partida Michael Nabil adicionou uma regra para garantir que uma string esteja em uppercase. Você pode ver os PR’s aqui e aqui.

Lembrando que, com novas regras, vem novas strings de linguagem, então lembre de atualizar os arquivos de lang propriamente…

return [
 // other rules
'lowercase' => 'The :attribute must be lowercase.',
'uppercase' => 'The :attribute must be uppercase.',
];

Adicionado método assertRedirectToRoute

Essa é outra contribuição muito bem vinda! Zaher Ghaibeh adicionou um método para ser possível testar que após uma ação o request é redirecionado para uma rota nomeada!

$this->get('test-route')
    ->assertRedirectToRoute('named-route');

Isso é excelente, porque assim podemos certificar que após determinado request somos redirecionados a uma rota específica e fazer essa certificação com base no nome da rota, e não sua uri.

Adicionado o método saveManyQuietly ao Eloquent

Outra adição foi a possibilidade de fazer o saveManyQuietly em relations belongsToMany e hasOneOrMany do Eloquent.

Como sabemos, quando fazemos um saveQuietly informamos ao framework para não invocar seus observers. Antigamente se quiséssemos fazer isso precisavamos iterar sobre a collection e salvar um a um. Agora, graças a contribuição de Niels podemos fazer isso direto na collection… 😉

E eu acho que é isso pessoal! Atualização bem recheada de coisas boas pra dar aquela upada no nosso dia-a-dia de developers!

Continuem codando de blues away! o/