J'ai AuthController à Laravel et j'ai 2 tables, l'une est Utilisateurs et l'autre Utilisateurs_Information et je veux insérer dans Utilisateurs_Informations lors de l'enregistrement.
Je souhaite donc obtenir l'ID de la méthode suivante, insérer une nouvelle ligne et définir l'ID de colonne de cette ligne sur l'ID de l'utilisateur que je viens de créer.
/**
* Create a new user instance after a valid registration.
*
* @param array $data
* @return User
*/
protected function create(array $data)
{
return User::create([
'username' => $data['username'] . ' ' . $data['username2'],
'mail' => $data['mail'],
'password' => bcrypt($data['password']),
]);
}
Je veux insérer dans Users_Information avec un identifiant de colonne, current_food et current_level
J'ai un contrôleur pour User_Information appelé UserInformation, pourrais-je simplement appeler UserInformation :: create, mais comment puis-je obtenir l'ID de User :: create?
Essayez d'utiliser ->id
de l'objet retourné, quelque chose comme:
$id = $this->create($data)->id;
La méthode create()
renvoie le modèle.
$user = User::create([
'username' => $data['username'] . ' ' . $data['username2'],
'mail' => $data['mail'],
'password' => bcrypt($data['password']),
]);
$userInfo = UserInformation::create([
'user_id' => $user->id,
'current_food' => $food,
'current_level' => $level,
]);
Eloquent a un moyen agréable de gérer sauver des relations , qui peuvent être utilisées dans votre cas. Il vous permet de sauvegarder un modèle associé sans accéder directement au modèle. Bien sûr, vous devez vous assurer que votre relation est définie en premier dans les modèles appropriés.
Ci-dessous va créer l'utilisateur et leurs informations. J'ai supposé que la méthode de votre relation s'appelait information
mais vous pouvez ajuster si nécessaire.
$user = User::create([
'username' => $data['username'] . ' ' . $data['username2'],
'mail' => $data['mail'],
'password' => bcrypt($data['password']),
])->information()->create([
'current_food' => $current_food,
'current_level' => $current_level
]);
Notez que nous n'avons pas explicitement défini user_id
car nous avons simplement créé les informations en accédant à la relation que vous avez définie. Laravel/Eloquent s'en charge pour vous!
De plus, si vous n'utilisez pas Eloquent, vous pouvez utiliser insertGetId
:
$id = DB::table('users')->insertGetId(
[ 'name' => 'John Doe', 'email' => '[email protected]']
);
utilisez insertGetId (); il vous donne l'id d'une ligne insérée.
$userId = User::insertGetId([
'name' => $request->input('name'),
'email' => $request->input('email'),
'password' => bcrypt($request->input('password')),
]);