Laravel 4: comment mettre à jour plusieurs champs dans un Éloquent modèle?
Comment puis-je mettre à jour plusieurs champs dans un Éloquent modèle? Disons que je l'ai eu comme ceci:
$user = User::where("username", "=", "rok");
Et puis j'ai tous ces paramètres de modèle:
$new_user_data = array("email" => "[email protected]", "is_superuser" => 1, ...);
Je ne peux pas juste faire:
$user->update($new_user_data);
Quelle est la bonne manière? Je n'espère pas un foreach
.
Le code suivant fonctionne, cependant. Est-ce la voie à suivre?
User::where("id", "=", $user->id)->update($new_user_data);
Le problème avec le dernier (en plus d'être maladroit), c'est que lors de l'utilisation d'un objet, contexte, la mise à jour des champs ne sont pas visibles dans la $this
variable.
- Oui, je pense que lors de la mise à jour de plusieurs colonnes, la
update()
fonction ne fonctionne que lors de l'actualisation du Modèle directement. Sinon, vous devez utiliserfill()
etsave()
.
Vous devez vous connecter pour publier un commentaire.
La méthode que vous cherchez est
fill()
:En fait, vous pourriez faire
$user->fill($new_user_data)->save();
mais je trouve que les états distincts un peu plus facile à lire et à déboguer.Vous êtes à la recherche pour cette:
Consulter : http://laravel.com/docs/4.2/eloquent#insert-update-delete
Je dois vous suggérons d'utiliser la plus courte de code, tels que
Ou même plus courte
Je crois que la dernière instruction est plus facile à déboguer et ressemble plus belle.
Avertissement: Si votre table contient beaucoup d'utilisateurs nommé " rok " à la fois mentionné les déclarations de mise à jour de tous ces registres à la fois. Vous devez toujours mettre à jour les registres avec le champ id de la valeur.
Essayer cela,