Как правильно обновить модель на laravel? Метод Illuminate \ Database \ Eloquent \ Collection :: update не существует - PullRequest
0 голосов
/ 19 февраля 2020

Я создал страницу для пользователя, чтобы обновить информацию о своей компании, все значения по умолчанию для всех компаний при создании пользователя равны нулю. Когда пользователь заполняет информацию, я получаю эту ошибку:

 Method Illuminate\Database\Eloquent\Collection::update does not exist 

Я уверен, что эта ошибка из-за моего CompanyController@edit

     public function edit(Request $request)
{
    $this->validate($request, [
        'company_name' => 'alpha|max:50',
        'phone' => 'integer|max:50',
        'gst_hst_number' => 'integer|max:50',
        'country' => 'alpha|max:50',
    ]);

    $companies = Company::where('id', Auth::user()->id)->get();

    $companies->update([
        'company_name' => $request->input('company_name'),
        'phone' => $request->input('phone'),
        'gst_hst_number' => $request->input('gst_hst_number'),
        'country' => $request->input('country')
    ]);

    return redirect()->route('company.index')->with('info', 'Company information was updated.');
}

Я застрял на этом довольно много времени выпуск, с удовольствием бы уточнить помощь и информацию о том, как правильно обновлять модели моей компании по заполнению полей.

Ответы [ 3 ]

3 голосов
/ 19 февраля 2020

‌ Как говорится в сообщении об ошибке, вы используете метод обновления для collection, вам необходимо изменить запрос на выборку следующим образом:

$companies = Company::where('id', Auth::user()->id)->first();

Поскольку метод get() возвращает коллекцию, ни одной записи.

1 голос
/ 19 февраля 2020

Попробуйте это. ->get() для нескольких коллекций, здесь вы можете напрямую обновить свои записи.

$companies = Company::where('id', Auth::user()->id)->update([
    'company_name' => $request->input('company_name'),
    'phone' => $request->input('phone'),
    'gst_hst_number' => $request->input('gst_hst_number'),
    'country' => $request->input('country')
]);;
1 голос
/ 19 февраля 2020

Вы используете метод update для коллекции, но в коллекции нет метода update,

, вам нужно удалить get(), так что вы можете использовать метод update в eloquent Builder :

$companies = Company::where('id', Auth::user()->id);
$companies->update([
        'company_name' => $request->input('company_name'),
        'phone' => $request->input('phone'),
        'gst_hst_number' => $request->input('gst_hst_number'),
        'country' => $request->input('country')
]);
...