Привет, у меня проблема, когда я пытаюсь обновить данные в своей таблице, вместо этого я добавляю новую запись. Мой метод обновления:
public function update(CompanyUpdateRequest $request, Company $company)
{
try{
$request['id'] = 1;
$this->companyService->setModel($company)->update($request->all());
$request->session()->flash('success', 'Nastavenie bolo zmenené!');
return redirect('admin/company');
}
catch(\Exception $e){
$request->session()->flash('warning', 'Nastavenie sa nepodarilo uložiť!' . $e);
return redirect('admin/company');
}
}
Обновление моего сервиса:
public function update(array $data, $modelOrId = null): BaseModelService
{
if ($modelOrId !== null) {
if ($modelOrId instanceof Model) {
$this->setModel($modelOrId);
} elseif (is_int($modelOrId)) {
$modelOrId = $this->getRepository()->find($modelOrId);
$this->setModel($modelOrId);
}
}
$this->getModel()->fill($data)->save();
//Here is the problem when i try to save
return $this;
}
В таблице всегда будет одна компания, поэтому мне всегда нужно обновлять запись с идентификатором 1. Но когда я пытаюсь обновить, как я покажу вам на картинке выше с id = 1, я получу дубликат сообщения первичный ключ. Где должны быть проблемы, пожалуйста?
App\Company {#306 ▼
#table: "company"
#fillable: array:13 [▼
0 => "phone_number"
1 => "name"
2 => "email"
3 => "instagram"
4 => "facebook"
5 => "youtube"
6 => "gps"
7 => "address"
8 => "psc"
9 => "city"
10 => "house_number"
11 => "name_executive_manager"
12 => "surname_executive_manager"
]
#connection: null
#primaryKey: "id"
#keyType: "int"
+incrementing: true
#with: []
#withCount: []
#perPage: 15
+exists: false
+wasRecentlyCreated: false
#attributes: []
#original: []
#changes: []
#casts: []
#dates: []
#dateFormat: null
#appends: []
#dispatchesEvents: []
#observables: []
#relations: []
#touches: []
+timestamps: true
#hidden: []
#visible: []
#guarded: array:1 [▼
0 => "*"
]
}
Мой маршрут обновления:
Route::put('/admin/company/{id}', 'Admin\CompanyController@update')->name('admin_company_update');