with examples doesnthave conectar con laravel laravel-4 eloquent

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

Ver el enlace aquí

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.