updateorcreate - Laravel 4: ¿cómo actualizar múltiples campos en un modelo Eloquent?
updateorcreate laravel (4)
Debo sugerir que use un código más corto, como
$new_user_data=array(''a''=>''n'',''b''=>''m'');
$user=User::whereUsername(''rok'');//camelCase replaces "=" sign
$user->fill($new_user_data)->save();
O incluso más corto
$new_user_data=array(''a''=>''n'',''b''=>''m'');
User::whereUsername(''rok'')->update($new_user_data);//camelCase replaces "=" sign
Creo que la última declaración es más fácil de depurar y se ve mejor.
Advertencia: si su tabla contiene muchos usuarios llamados ''rok'', ambos enunciados mencionados actualizarán todos esos registros a la vez. Siempre debe actualizar los registros con el valor del campo de identificación.
¿Cómo puedo actualizar varios campos en un modelo Eloquent? Digamos que lo tengo así:
$user = User::where("username", "=", "rok");
Y luego tengo todos estos parámetros del modelo:
$new_user_data = array("email" => "[email protected]", "is_superuser" => 1, ...);
No puedo simplemente hacer:
$user->update($new_user_data);
¿Cuál es la forma correcta? Espero que no sea un foreach
.
Lo siguiente funciona, sin embargo. ¿Es este el camino a seguir?
User::where("id", "=", $user->id)->update($new_user_data);
El problema con el último (además de ser torpe) es que al usarlo desde un contexto de objeto, los campos actualizados no son visibles en la variable $this
.
El método que estás buscando es fill()
:
$user = User::where ("username","rok"); // note that this shortcut is available if the comparison is =
$new_user_data = array(...);
$user->fill($new_user_data);
$user->save();
En realidad, podría hacer $user->fill($new_user_data)->save();
pero encuentro que las declaraciones separadas son un poco más fáciles de leer y depurar.
Prueba esto,
// took required data out of the request
$postData = request(
[
''firstName'',
''lastName'',
''address1'',
''address2'',
''address3'',
''postcode'',
''phone'',
''imageURL'',
]
);
// persisted it to the database
DB::table(''users'')
->where(''id'', auth()->user()->id)
);
Usted está buscando esto:
$user = User::where("username","rok")
->update(
array(
"email" => "[email protected]",
"is_superuser" => 1,
// ..
)
);
Consulte: http://laravel.com/docs/4.2/eloquent#insert-update-delete