examples - mongodb laravel ubuntu
Diferencia Eloquent push() y save() (3)
He leído laravel 4 docs sobre elocuente y estaba bastante intrigado por la parte de push (). Dice,
A veces puede desear guardar no solo un modelo, sino también todas sus relaciones. Para hacerlo, puedes usar el método push:
Guardar un modelo y relaciones
$user->push();
Lo siento pero es un poco borroso por mi parte la diferencia entre save () y push (). Espero que alguien pueda aclarar esto para mí. Gracias.
Aquí está la magia detrás de las escenas ...
/**
* Save the model and all of its relationships.
*
* @return bool
*/
public function push()
{
if ( ! $this->save()) return false;
// To sync all of the relationships to the database, we will simply spin through
// the relationships and save each model via this "push" method, which allows
// us to recurse into all of these nested relations for the model instance.
foreach ($this->relations as $models)
{
foreach (Collection::make($models) as $model)
{
if ( ! $model->push()) return false;
}
}
return true;
}
Simplemente muestra que push()
actualizará todos los modelos relacionados con el modelo en cuestión, por lo que si cambia alguna de las relaciones, entonces llame a push()
Actualizará ese modelo y todas sus relaciones Like so ...
$user = User::find(32);
$user->name = "TestUser";
$user->state = "Texas";
$user->location->address = "123 test address"; //This line is a pre-defined relationship
Si aquí solo ...
$user->save();
Entonces la dirección no se guardará en el modelo de dirección ... Pero si usted ...
$user->push();
Luego guardará todos los datos y también guardará la dirección en la table/model
direcciones, porque usted definió esa relación en el User model
.
push()
también actualizará todas las marcas de tiempo updated_at de todos los modelos relacionados de cualquier usuario / modelo que push()
Espero que eso aclare las cosas ...
Digamos que hiciste esto:
$user = User::find(1);
$user->phone = ''555-0101'';
$user->address->zip_code = ''99950'';
Acabas de hacer cambios en dos tablas diferentes, para guardarlas tienes que:
$user->save();
$user->address->save();
o
$user->push();
push () solo se puede usar para actualizar una instancia de modelo existente junto con sus relaciones, no para crear una nueva. Simplemente di: push () actualizaciones y no insertar.