Ich habe AuthController in Laravel und ich habe 2 Tabellen, eine ist Users und eine ist Users_Information und ich möchte bei der Registrierung in Users_Information einfügen.
Ich möchte also die ID von der folgenden Methode abrufen, eine neue Zeile einfügen und die Spalten-ID dieser Zeile auf die ID des gerade erstellten Benutzers setzen.
/**
* 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']),
]);
}
Ich möchte in Users_Information mit einer Spalten-ID, current_food und current_level einfügen
Ich habe einen Controller für die Users_Information namens UserInformation. Würde ich einfach UserInformation :: create aufrufen, aber wie bekomme ich die ID von User :: create?
Versuchen Sie, ->id
des zurückgegebenen Objekts zu verwenden, etwa:
$id = $this->create($data)->id;
Die create()
-Methode gibt das Modell zurück.
$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 hat eine nette Methode, um Speicherbeziehungen zu handhaben, die in Ihrem Fall verwendet werden können. Sie können damit ein verwandtes Modell speichern, ohne direkt auf das Modell zuzugreifen. Natürlich müssen Sie zuerst sicherstellen, dass Ihre Beziehung in den entsprechenden Modellen definiert ist.
Im Folgenden werden der Benutzer und seine Informationen erstellt. Ich nahm an, dass die Methode Ihrer Beziehung information
genannt wurde, aber Sie können sie bei Bedarf anpassen.
$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
]);
Beachten Sie, dass wir user_id
nicht explizit festgelegt haben, weil wir die Informationen einfach erstellt haben, indem Sie auf die von Ihnen definierte Beziehung zugreifen. Laravel/Eloquent übernimmt das für Sie!
Wenn Sie Eloquent nicht verwenden, können Sie auch insertGetId
verwenden:
$id = DB::table('users')->insertGetId(
[ 'name' => 'John Doe', 'email' => '[email protected]']
);
use insertGetId (); Es gibt Ihnen die ID einer eingefügten Zeile.
$userId = User::insertGetId([
'name' => $request->input('name'),
'email' => $request->input('email'),
'password' => bcrypt($request->input('password')),
]);
Angenommen, ich habe einen Modellnamen Mitarbeiter und ich möchte einige Daten in dieses Modell einfügen, um auch die Tabellen-ID zu erhalten. So kann ich dies leicht mit folgendem Code erreichen:
$employee = new Employee();
$employee->employeeName = 'Something';
$employee->save();
$employee->id;