with updateorcreate update findorfail create laravel laravel-4

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) );