Saltar al contenido

Guardar registros relacionados en laravel

Solución:

De elocuente push() guarda el modelo y sus relaciones, pero primero tienes que decir qué quieres que participe en la relación.

Dado que su modelo de usuario / tabla contiene la identificación del concesionario, supongo que un usuario puede pertenecer a un solo concesionario, por lo que la relación debería verse así:

Modelo de usuario:

public function dealership()
{
  return $this->belongsTo('Dealership');
}

Modelo de concesionario:

public function users()
{
  return $this->hasMany('User');
}

Para salvar a un usuario desde la perspectiva del concesionario, haga lo siguiente:

$dealership->users()->save($user);

Para asociar un concesionario con un usuario, haga lo siguiente:

$user->dealership()->associate($dealership);
$user->save();

Verifique esta respuesta para ver la diferencia de push () y save ()

Deberá definir correctamente las relaciones de sus modelos según la documentación. Si esto se hace correctamente, debería funcionar. Esto es lo que hace push ():

/**
 * 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;
    }

En su caso, tiene uno (concesionario) que pertenece a muchos (usuarios)

En su modelo de Usuarios:

class Users extends Eloquent {

    public function dealership()
    {
        return $this->belongsTo('Dealership');

    }

}

En el ejemplo anterior, Eloquent buscará una columna dealership_id en la tabla de usuarios. En su modelo de concesionario:

class Dealership extends Eloquent {

    public function users()
    {
        return $this->hasMany('User');
    }

}

En su función de tienda:

 public function store()
    {
        $user = new User();
        $user->email = Input::get('email');
        $user->password = Input::get('password');


        $user->dealership = new Dealership();
        $user->dealership->name = Input::get('dealership_name');

        $user->push();
        return "User Saved";

    }  

Aprenda aquí más sobre relaciones elocuentes

También, por favor, eche un vistazo a mi respuesta aquí.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *