我之前从未使用过Laravel,而且我正在使用laravels默认用户注册&amp ;;进行3部分注册。 auth表单的第1步。每一步都有自己的表。步骤1s表的id列用于链接所有3个表。
目前我正在使用$id = Auth::user()->id
来获取步骤2控制器中的登录用户ID。相反,如何在创建用户之后将id路由/传递给步骤2控制器存储方法并将视图重定向到步骤2?
在authcontroller中
protected function create(array $data)
{
return User::create([
'email' => $data['email'],
'password' => bcrypt($data['password']),
'firstName' => $data['firstName'],
'middleName' => $data['middleName'],
'lastName' => $data['lastName'],
]);
}
在Illuminate \ Foundation \ Auth \ RegistersUsers;
public function register(Request $request)
{
$validator = $this->validator($request->all());
if ($validator->fails()) {
$this->throwValidationException(
$request, $validator
);
}
Auth::guard($this->getGuard())->login($this->create($request->all()));
// pass id to store method in profile and redirect to profileinfo
return view('user/profileinfo');
}
}
答案 0 :(得分:6)
您可以通过以下方式更改AuthController中的create方法:
protected function create(array $data)
{
$user = User::create([
'name' => $data['name'],
'email' => $data['email'],
'password' => bcrypt($data['password']),
]);
$id= $user->id; // Get current user id
return $user;
}
答案 1 :(得分:3)
尝试这种方法:
$data = new FooModel(); // or in your case User();
$data->column_1 = 'value_1';
$data->column_2 = 'value_2';
$data->save();
现在在致电save()
后,$data->id
应该为您提供最后插入的ID,以便您可以随时随地使用它。
请记住,如果PK列(带有ID的列)不是自动递增,它将始终返回0.
答案 2 :(得分:2)
您应该使用返回模型的create()
方法,而不是使用返回true
或false
的{{1}}方法:
save()
但如果您仍需要短语法,则可以使用mass assignment:
$id = $data->save()->id;
答案 3 :(得分:0)
您可以将var fields = ["field1", "field2", "field3", "field4", "field5"];
var tsv = fields.join("\t");
window.location.href = "data:text/tab-separated-values," + encodeURIComponent(tsv);
功能更改为
create()