Php Laravel при обновлении данных вместо него добавляется новая запись - PullRequest
1 голос
/ 15 марта 2020

Привет, у меня проблема, когда я пытаюсь обновить данные в своей таблице, вместо этого я добавляю новую запись. Мой метод обновления:

 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');

1 Ответ

0 голосов
/ 15 марта 2020

Проблема была в пути: Плохой:

Route::put('/admin/company/{id}', 'Admin\CompanyController@update')->name('admin_company_update');

Хороший:

Route::put('/admin/company/{company}', 'Admin\CompanyController@update')->name('admin_company_update');

Только что изменил идентификатор компании

THX Md Juyel Rana за помощь мне чтобы решить эту проблему

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...