Laravel 8.58 est sortie le 31 aout 2021 et voici ce qu’apporte cette nouvelle version.
Au menu de cette version Laravel 8.58
L’équipe Laravel a ajouté une méthode updateOrFail() à Eloquent, 2 nouvelles méthodes de validation de règle (prohibits, required_without) et à modifié d’UPPERCASE en LOWERCASE les noms de chiffrement en OpenSSL, car OpenSSL < 1.1.0 ne reconnaît pas les noms de chiffrement en UPPERCASE.
Ajout de la méthode updateOrFail() au modèle Eloquent
public function updateOrFail(array $attributes = [], array $options = [])
{
if (! $this->exists) {
return false;
}
return $this->fill($attributes)->saveOrFail($options);
}
Le fichier modifié est : src/Illuminate/Database/Eloquent/Model.php
Méthodes de validation des règles
Validator::validate([
'email' => 'example@example.com',
'emails' => ['example@example.com', 'other.example@example.com']
], [
'email' => 'prohibits:emails'
]);
Si le champ ‘email‘ est fourni alors le champ ‘emails‘ ne sera pas pris en compte. C’est soit l’un, soit l’autre (NAND).
Validator::validate([
'post_id' => 1,
'created_by' => 2,
'created_at' => '2020-07-16 20:54:22'
], [
'post_id' => 'prohibits:created_by,created_at'
]);
Ici, si les champs ‘created_by‘ ou ‘created_at‘ existe déjà, le fait de les resoumettre pour un ‘post_id‘ existant générera une erreur de validation car ces deux champs ne peuvent normalement être initialisés qu’à la création de l’enregistrement.
Validator::validate([
'email' => 'example@example.com',
'emails' => ['example@example.com', 'other.example@example.com']
], [
'email' => ['prohibits:emails', 'required_without:emails']
]);
Ici, on rajoute à ‘prohibits‘ la règle ‘required_without‘ qui permet de s’assurer que seul un des deux champs sera fourni. Il s’agit d’un OU EXCLUSIF (XOR).
Si vous voulez regardez de plus prêt le contenu de cette nouvelle version sur Github, voici le contenu officiel de la note de version de Laravel 8.58 :
Added in Laravel 8.58
- Added updateOrFail method to Model (#38592)
- Make mail stubs more configurable (#38596)
- Added prohibits validation (#38612)
Changed
A bientôt pour les prochaines versions de Laravel.
PS : hey les dev, vous pouvez aussi consulter mes autres articles concernant les releases de Laravel !