在 laravel 中使用 eloquent 关系更新期间从空值创建默认对象
Creating default object from empty value during update with eloquent relationship in laravel
我正在尝试更新我使用一对一关系的 'employee' 和 'employee_details'。在更新期间,我在 employeeDetail 的 $employeeDetail->card_no = $request->card_no, 中收到此错误,我搜索并尝试实施可能的解决方案,但仍然出现此错误。有人可以帮我解决这个问题吗?
EmployeeController.php
public function update(Request $request, $id)
{
$employee = Employee::find($id);
$employee->card_no = $request->card_no;
$employee->name = $request->name;
$employee->father_name = $request->father_name;
$employee->mother_name = $request->mother_name;
$employee->spouse_name = $request->spouse_name;
$employee->permanent_add = $request->permanent_add;
$employee->present_add = $request->present_add;
$employee->area = $request->area;
$employee->dob = Carbon::parse($request->dob)->format('Y-m-d');
$employee->blood_group = $request->blood_group;
$employee->nid_number = $request->nid_number;
$employee->mobile = $request->mobile;
$employee->reference_name = $request->reference_name;
$employee->reference_nid = $request->reference_nid;
$employee->reference_mobile = $request->reference_mobile;
$employee->reference_add = $request->reference_add;
if (! $request->photo == '') {
$employee->photo = $request->photo;
if ($file = $request->file('photo')) {
$extension = $file->getClientOriginalExtension() ?: 'png';
$folderName = '/uploads/employees/photo';
$destinationPath = public_path() . $folderName;
$safeName = str_random(10) . '.' . $extension;
$file->move($destinationPath, $safeName);
//delete old photo if exists
if (File::exists(public_path() . $folderName . $employee->photo)) {
File::delete(public_path() . $folderName . $employee->photo);
}
//save new file path into db
$employee->photo = $safeName;
}
}
if (! $request->nid_file == '') {
$employee->nid_file = $request->nid_file;
if ($file = $request->file('nid_file')) {
$extension = $file->getClientOriginalExtension() ?: 'png';
$folderName = '/uploads/employees/nid';
$destinationPath = public_path() . $folderName;
$safeName = str_random(10) . '.' . $extension;
$file->move($destinationPath, $safeName);
//delete old nid_file if exists
if (File::exists(public_path() . $folderName . $employee->nid_file)) {
File::delete(public_path() . $folderName . $employee->nid_file);
}
//save new file path into db
$employee->nid_file = $safeName;
}
}
if (! $request->reference_nid_file == '') {
$employee->reference_nid_file = $request->reference_nid_file;
if ($file = $request->file('reference_nid_file')) {
$extension = $file->getClientOriginalExtension() ?: 'png';
$folderName = '/uploads/employees/nid';
$destinationPath = public_path() . $folderName;
$safeName = str_random(10) . '.' . $extension;
$file->move($destinationPath, $safeName);
//delete old reference_nid_file if exists
if (File::exists(public_path() . $folderName . $employee->reference_nid_file)) {
File::delete(public_path() . $folderName . $employee->reference_nid_file);
}
//save new file path into db
$employee->reference_nid_file = $safeName;
}
}
if (! $request->character_file == '') {
$employee->character_file = $request->character_file;
if ($file = $request->file('character_file')) {
$extension = $file->getClientOriginalExtension() ?: 'png';
$folderName = '/uploads/employees/character-certificate';
$destinationPath = public_path() . $folderName;
$safeName = str_random(10) . '.' . $extension;
$file->move($destinationPath, $safeName);
//delete old character_file if exists
if (File::exists(public_path() . $folderName . $employee->character_file)) {
File::delete(public_path() . $folderName . $employee->character_file);
}
//save new file path into db
$employee->character_file = $safeName;
}
}
if ($employee->save()) {
$employeeDetail = EmployeeDetail::where(['employee_id' => $id])
->update([
$employeeDetail->card_no = $request->card_no,
$employeeDetail->section_id = $request->section_id,
$employeeDetail->designation_id = $request->designation_id,
$employeeDetail->salarygrade_id = $request->salarygrade_id,
$employeeDetail->joining_date = Carbon::parse($request->joining_date)->format('Y-m-d'),
$employeeDetail->quit_date = $request->quit_date,
]);
return back()->with('success', 'Congratiolations! You appointed a new employee.');
}
}
改变
来自
$employeeDetail = EmployeeDetail::where(['employee_id' => $id])
->update([
$employeeDetail->card_no = $request->card_no,
$employeeDetail->section_id = $request->section_id,
$employeeDetail->designation_id = $request->designation_id,
$employeeDetail->salarygrade_id = $request->salarygrade_id,
$employeeDetail->joining_date = Carbon::parse($request->joining_date)->format('Y-m-d'),
$employeeDetail->quit_date = $request->quit_date,
]);
至
$employeeDetail = EmployeeDetail::where(['employee_id' => $id])
->update([
'card_no' => $request->card_no,
'section_id' => $request->section_id,
'designation_id' => $request->designation_id,
'salarygrade_id' => $request->salarygrade_id,
'joining_date' => Carbon::parse($request->joining_date)->format('Y-m-d'),
'quit_date' => $request->quit_date,
]);
我正在尝试更新我使用一对一关系的 'employee' 和 'employee_details'。在更新期间,我在 employeeDetail 的 $employeeDetail->card_no = $request->card_no, 中收到此错误,我搜索并尝试实施可能的解决方案,但仍然出现此错误。有人可以帮我解决这个问题吗?
EmployeeController.php
public function update(Request $request, $id)
{
$employee = Employee::find($id);
$employee->card_no = $request->card_no;
$employee->name = $request->name;
$employee->father_name = $request->father_name;
$employee->mother_name = $request->mother_name;
$employee->spouse_name = $request->spouse_name;
$employee->permanent_add = $request->permanent_add;
$employee->present_add = $request->present_add;
$employee->area = $request->area;
$employee->dob = Carbon::parse($request->dob)->format('Y-m-d');
$employee->blood_group = $request->blood_group;
$employee->nid_number = $request->nid_number;
$employee->mobile = $request->mobile;
$employee->reference_name = $request->reference_name;
$employee->reference_nid = $request->reference_nid;
$employee->reference_mobile = $request->reference_mobile;
$employee->reference_add = $request->reference_add;
if (! $request->photo == '') {
$employee->photo = $request->photo;
if ($file = $request->file('photo')) {
$extension = $file->getClientOriginalExtension() ?: 'png';
$folderName = '/uploads/employees/photo';
$destinationPath = public_path() . $folderName;
$safeName = str_random(10) . '.' . $extension;
$file->move($destinationPath, $safeName);
//delete old photo if exists
if (File::exists(public_path() . $folderName . $employee->photo)) {
File::delete(public_path() . $folderName . $employee->photo);
}
//save new file path into db
$employee->photo = $safeName;
}
}
if (! $request->nid_file == '') {
$employee->nid_file = $request->nid_file;
if ($file = $request->file('nid_file')) {
$extension = $file->getClientOriginalExtension() ?: 'png';
$folderName = '/uploads/employees/nid';
$destinationPath = public_path() . $folderName;
$safeName = str_random(10) . '.' . $extension;
$file->move($destinationPath, $safeName);
//delete old nid_file if exists
if (File::exists(public_path() . $folderName . $employee->nid_file)) {
File::delete(public_path() . $folderName . $employee->nid_file);
}
//save new file path into db
$employee->nid_file = $safeName;
}
}
if (! $request->reference_nid_file == '') {
$employee->reference_nid_file = $request->reference_nid_file;
if ($file = $request->file('reference_nid_file')) {
$extension = $file->getClientOriginalExtension() ?: 'png';
$folderName = '/uploads/employees/nid';
$destinationPath = public_path() . $folderName;
$safeName = str_random(10) . '.' . $extension;
$file->move($destinationPath, $safeName);
//delete old reference_nid_file if exists
if (File::exists(public_path() . $folderName . $employee->reference_nid_file)) {
File::delete(public_path() . $folderName . $employee->reference_nid_file);
}
//save new file path into db
$employee->reference_nid_file = $safeName;
}
}
if (! $request->character_file == '') {
$employee->character_file = $request->character_file;
if ($file = $request->file('character_file')) {
$extension = $file->getClientOriginalExtension() ?: 'png';
$folderName = '/uploads/employees/character-certificate';
$destinationPath = public_path() . $folderName;
$safeName = str_random(10) . '.' . $extension;
$file->move($destinationPath, $safeName);
//delete old character_file if exists
if (File::exists(public_path() . $folderName . $employee->character_file)) {
File::delete(public_path() . $folderName . $employee->character_file);
}
//save new file path into db
$employee->character_file = $safeName;
}
}
if ($employee->save()) {
$employeeDetail = EmployeeDetail::where(['employee_id' => $id])
->update([
$employeeDetail->card_no = $request->card_no,
$employeeDetail->section_id = $request->section_id,
$employeeDetail->designation_id = $request->designation_id,
$employeeDetail->salarygrade_id = $request->salarygrade_id,
$employeeDetail->joining_date = Carbon::parse($request->joining_date)->format('Y-m-d'),
$employeeDetail->quit_date = $request->quit_date,
]);
return back()->with('success', 'Congratiolations! You appointed a new employee.');
}
}
改变
来自
$employeeDetail = EmployeeDetail::where(['employee_id' => $id])
->update([
$employeeDetail->card_no = $request->card_no,
$employeeDetail->section_id = $request->section_id,
$employeeDetail->designation_id = $request->designation_id,
$employeeDetail->salarygrade_id = $request->salarygrade_id,
$employeeDetail->joining_date = Carbon::parse($request->joining_date)->format('Y-m-d'),
$employeeDetail->quit_date = $request->quit_date,
]);
至
$employeeDetail = EmployeeDetail::where(['employee_id' => $id])
->update([
'card_no' => $request->card_no,
'section_id' => $request->section_id,
'designation_id' => $request->designation_id,
'salarygrade_id' => $request->salarygrade_id,
'joining_date' => Carbon::parse($request->joining_date)->format('Y-m-d'),
'quit_date' => $request->quit_date,
]);