LaravelにAuthControllerがあり、2つのテーブルがあります。1つはユーザーで、もう1つはUsers_Informationです。登録時にUsers_Informationに挿入します。
したがって、次のメソッドからIDを取得し、新しい行を挿入して、その行の列IDを作成したユーザーのIDに設定します。
/**
* 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']),
]);
}
列ID、current_food、current_levelを使用してUsers_Informationに挿入したい
UserInformationというUsers_Informationのコントローラーがあり、UserInformation :: createを呼び出すだけですが、User :: createからidを取得するにはどうすればよいですか?
返されたオブジェクトの->id
を使用してみてください:
$id = $this->create($data)->id;
create()
メソッドはモデルを返します。
$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には 関係を保存する を処理する素晴らしい方法があり、これはあなたのケースで使用できます。モデルに直接アクセスせずに、関連するモデルを保存できます。もちろん、最初に関係が適切なモデルで定義されていることを確認する必要があります。
以下は、ユーザーとその情報を作成します。関係のメソッドはinformation
と呼ばれますが、必要に応じて調整できます。
$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
]);
定義した関係にアクセスして情報を作成しただけなので、明示的にuser_id
を設定しなかったことに注意してください。 Laravel/Eloquentがそれを処理します!
また、Eloquentを使用していない場合は、insertGetId
を使用できます。
$id = DB::table('users')->insertGetId(
[ 'name' => 'John Doe', 'email' => '[email protected]']
);
insertGetId();を使用します挿入された行のIDを提供します。
$userId = User::insertGetId([
'name' => $request->input('name'),
'email' => $request->input('email'),
'password' => bcrypt($request->input('password')),
]);
モデル名Employeeがあり、このモデルにデータを挿入し、テーブルIDも取得したいとします。だから私は以下のコードでこれを簡単に達成できます:
$employee = new Employee();
$employee->employeeName = 'Something';
$employee->save();
$employee->id;