Php 注册用户时检查记录是否存在
在我的寄存器控制器中-在创建用户之前,我使用以下方法检查另一个表中是否存在记录:Php 注册用户时检查记录是否存在,php,laravel,eloquent,Php,Laravel,Eloquent,在我的寄存器控制器中-在创建用户之前,我使用以下方法检查另一个表中是否存在记录: public function getCompanyDetails($id) { $details = Company::where('company_id', $id)->first(); return $details; } protected function create(array $data) { $company_id = $data['com_id']; $
public function getCompanyDetails($id)
{
$details = Company::where('company_id', $id)->first();
return $details;
}
protected function create(array $data)
{
$company_id = $data['com_id'];
$company_details = $this->getCompanyDetails($company_id);
if ($company_details == null) {
return redirect()
->back()
->with('warning', 'We could not find the company');
} else {
return User::create([
'name' => $data['name'],
'email' => $data['email'],
'password' => Hash::make($data['password']),
]);
}
}
但是,当找不到公司记录时。我收到以下错误消息:
无法将Illumb\Http\RedirectResponse类型的对象用作数组 我相信它期待着用户类型的返回。但是,如果找不到该公司,我如何重定向回注册页面
提前感谢尝试方法
withErrors()
:
但是,我建议您使用验证规则Exists
,而不是进行更多查询并手动返回消息。你可以这样做:
$request->validate([
'company_id' => 'required|integer|exists:App\Company,id',
]);
这样就不需要额外的逻辑和其他方法
来源:为什么不使用?@RonvanderHeijden-我不确定是否可以使用验证检查不同表中id以外的字段rules@Davos98例如,检查我的答案。您可以对其使用
exists
规则。不能将Illumb\Http\RedirectResponse类型的对象用作数组
$request->validate([
'company_id' => 'required|integer|exists:App\Company,id',
]);