Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

459
Views
Laravel Jetstream: cómo unirse a un equipo predeterminado al registrarse

Estoy tratando de cambiar la lógica de Laravel Jetstream para unirme a un equipo predeterminado en el registro en lugar de crear un equipo personal. Encontré el método que hace esto:

 public function create(array $input) { Validator::make($input, [ 'name' => ['required', 'string', 'max:255'], 'email' => ['required', 'string', 'email', 'max:255', 'unique:users'], 'password' => $this->passwordRules(), 'terms' => Jetstream::hasTermsAndPrivacyPolicyFeature() ? ['required', 'accepted'] : '', ])->validate(); return DB::transaction(function () use ($input) { return tap(User::create([ 'name' => $input['name'], 'email' => $input['email'], 'password' => Hash::make($input['password']), ]), function (User $user) { $user->currentTeam = Team::find(1); # SQLSTATE[42S22]: Column not found: 1054 Unknown column 'currentTeam' in 'field list' $user->save(); }); }); }

El problema aquí es que currentTeam parece haber sido creado después del nivel de la base de datos y no una columna en la base de datos en sí. La documentación dice que currentTeam devuelve el modelo Team pero no dice cómo actualizar el equipo de usuarios actual mediante programación.

Puedo ver que puedo usar manualmente una consulta DB para insertar una fila en la tabla team_user pero debe haber un método para hacerlo.

 return DB::transaction(function () use ($input) { return tap(User::create([ 'name' => $input['name'], 'email' => $input['email'], 'password' => Hash::make($input['password']), ]), function (User $user) { DB::table('team_user')->insert(['user_id' => $user->id, 'team_id' => 1, 'role' => 'rfn']); $user->current_team_id = 1; }); });

Cualquier ayuda sería apreciada, entiendo que esto dependerá de este equipo que siempre existe en la base de datos, pero se implementarán más medidas para que no se pueda eliminar.

over 4 years ago · Santiago Trujillo
2 answers
Answer question

0

Después de algunos retoques con una versión local de Laravel, se me ocurrió esto. Esto supone que el equipo al que desea agregar el usuario ya se creó de alguna manera, posiblemente a través de una sembradora o se creó manualmente. El archivo que necesita editar es app/Actions/Fortify/CreateNewUser.php , es decir, el método createTeam .

En lugar de crear un nuevo equipo, queremos tomar un equipo de la base de datos, adjuntarlo al usuario recién registrado y luego convertir ese equipo ahora adjunto en el equipo actual de los usuarios.

 protected function createTeam(User $user) { $team = Team::first(); $user->teams()->attach($team); $user->switchTeam($team); }

La razón por la que primero debemos adjuntar el equipo es que switchTeam verifica si un usuario pertenece a ese equipo; si no, devuelve falso y no cambia al nuevo equipo. Al adjuntar el equipo primero, hacemos que el usuario pertenezca a ese equipo antes de que podamos cambiarlo como el equipo actual.

over 4 years ago · Santiago Trujillo Report

0

también puede asignar un rol en la respuesta anterior de @KimHallberg como se muestra a continuación

 $team = Team::first(); $user->teams()->attach($team, array('role' => 'editor')); $user->switchTeam($team);
over 4 years ago · Santiago Trujillo Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!