Laravel обновляет запись редактирования базы данных - возникает ошибка при отправке формы

Я использую этот код для редактирования записи базы данных:

public function service_edit($id)
{
    $service = Service::find($id);
    return view('Super_Admin/service/.service_edit')->with('service', $service);
}

public function service_update(Request $request, $id)
{
    $service = Service::find($id);
    $input['title_name'] = strtoupper ($request['title_name']);
    $input['link'] = strtoupper ($request['link']);
    $input['note'] = strtoupper ($request['note']);
    $input['image'] = time().'.'.$request->

    image->getClientOriginalExtension();
    $folder1 = public_path('WEBSITE-FILE/SERVICE/1');
    $path1 = $folder1 . $input['image']; // path 1
    $request->image->move($folder1, $input['image']);
    $path2 = public_path('WEBSITE-FILE/SERVICE/2').$input['image'];// path 2
    $path3 = public_path('WEBSITE-FILE/SERVICE/3'). $input['image']; // path 3
    $path4 = public_path('WEBSITE-FILE/SERVICE/4'). $input['image']; // path 4

    \File::copy($path1, $path2);
    \File::copy($path1, $path3);
    \File::copy($path1, $path4);

    $service->save();

    return back()->with('success','UPDATED SUCCESSFULLY .');
}

Я сталкиваюсь с этой ошибкой при отправке формы

"Call to a member function save() on array"

$service нужно экономить, а не $input
porloscerros Ψ 31.05.2019 05:14

@porloscerros я изменил этот код, форма успешно отправлена, но запись не обновлена ​​в базе данных

Ramu Ramu 31.05.2019 06:55

Я написал ответ. Вы должны присвоить значения запроса переменной $service (Service Model), а затем сохранить ее.

porloscerros Ψ 31.05.2019 07:02

Вы не обновляете ни один столбец в базе данных.

Rishi 31.05.2019 08:52
Стоит ли изучать PHP в 2023-2024 годах?
Стоит ли изучать PHP в 2023-2024 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Поиск нового уровня в Laravel с помощью MeiliSearch и Scout
Поиск нового уровня в Laravel с помощью MeiliSearch и Scout
Laravel Scout - это популярный пакет, который предоставляет простой и удобный способ добавить полнотекстовый поиск в ваше приложение Laravel. Он...
Освоение архитектуры микросервисов с Laravel: Лучшие практики, преимущества и советы для разработчиков
Освоение архитектуры микросервисов с Laravel: Лучшие практики, преимущества и советы для разработчиков
В последние годы архитектура микросервисов приобрела популярность как способ построения масштабируемых и гибких приложений. Laravel , популярный PHP...
Как построить CRUD-приложение в Laravel
Как построить CRUD-приложение в Laravel
Laravel - это популярный PHP-фреймворк, который позволяет быстро и легко создавать веб-приложения. Одной из наиболее распространенных задач в...
0
4
56
3
Перейти к ответу Данный вопрос помечен как решенный

Ответы 3

Вы инициализируете $input как массив, затем вызываете $input->save(), поэтому возникает ошибка.

Может быть, вы хотели использовать $service вместо $input?

я пробовал это, но данные не обновляются в базе данных, а также не показывают ошибку

Ramu Ramu 31.05.2019 06:39

Вы не пытались правильно, потому что я предложил тот же ответ @porloscerros. Рад, что хоть это тебе помогло

Leonardo Rossi 31.05.2019 09:48

измените следующую строку и попробуйте

$input= Service::find($id);

я изменил этот код, форма отправлена ​​​​успешно, но запись в базе данных не обновлена

Ramu Ramu 31.05.2019 06:42
Ответ принят как подходящий

$service нужно экономить, а не $input.
Вы должны присвоить значения запроса переменной $service (Service Object), а затем сохранить ее.
Попробуйте таким образом:

public function service_update(Request $request, $id)
{
    $service = Service::find($id);
    $service->title_name = strtoupper ($request->title_name);
    $service->link = strtoupper ($request->link);
    $service->note = strtoupper ($request->note);
    $service->image = time().'.'.$request->file('image')->getClientOriginalExtension();

    // ...

    $service->save();

    return back()->with('success','UPDATED SUCCESSFULLY .');
}

Другие вопросы по теме