Нестатический метод Illuminate \ Database \ Eloquent \ Model :: update () не должен вызываться статически

У меня есть кусок кода, как это:

<div class="form-group row">
<label for="image" class="col-form-label">Изображение</label>
<input id="image" type="file" class="form-control{{ $errors->has('image') ? ' is-invalid' : '' }}" name="image" value="{{ old('image', $products->image) }}">
@if($products->image)
<img src="{{ Storage::url($products->image) }}" alt="" style="width: 150px">
@endif
@if ($errors->has('image'))
<span class="invalid-feedback"><strong>{{ $errors->first('image') }}</strong></span>
@endif
</div>

Я получил следующую ошибку:

Нестатический метод Illuminate \ Database \ Eloquent \ Model :: update () должен
не называться статически

и у меня есть контроллер:

public function store(Request $request)
{
$this->validate($request, [
'name' => 'required|string|max:255',
'image' => 'required|image|mimes:jpg,jpeg,png',
]);
$file = request()->file('image') ? request()->file('image')->store('images', 'public') : null;
$product = product::create([
'name' => $request['name'],
'description' => $request['description'],
'image' => $file,
]);
return redirect()->route('products.index', $product);
}

Это CRUD

 public function update(Request $request, $id)
{
$this->validate($request, [ 'key' => 'required|string|max:255', // 'value' => 'required', ]);
$product = product::update([ 'key' => $request['key'], 'name' => $request['name'], // 'value' => $request['value'], ]);
return redirect()->route('products.show', $product);
}

-1

Решение

Вы должны попробовать это:

{

$this->validate($request, [
'name' => 'required|string|max:255',
'image' => 'required|image|mimes:jpg,jpeg,png',
]);

$file = request()->file('image') ? request()->file('image')->store('images', 'public') : null;
$product = product::create([
'name' => $request['name'],
'description' => $request['description'],
'image' => $file,
]);

return redirect()->route('products.index');
}
0

Другие решения

Я предлагаю вам изменить свой подход к обновлению данных. Чтобы обновить данные с помощью Laravel (на самом деле, не только Laravel, но и вообще во всех языках программирования и запросах, таких как MySQL), вам необходимо определить, какую запись вы хотите обновить. В Laravel вы можете сделать это с find метод. Конечно, вы можете использовать другой метод, как WHERE, Таким образом, чтобы ответить на вашу проблему, вы не можете сделать обновление, как создать. Поэтому ваш update Код метода должен выглядеть так:

public function update(Request $request, $id)
{
$this->validate($request, [
'key' => 'required|string|max:255',
// 'value' => 'required',
]);
$product = Product::find($id); //get the object of product you want to update
$product->key = $request['key'];
$product->name = $request['name'];
//$product->value = $request['value'];
$product->save();

return redirect()->route('products.show', $product);
}
0

Изменить строку:

  $product = product::update([ 'key' => $request['key'], 'name' => $request['name'], // 'value' => $request['value'], ]);

Изменить строку на: здесь «product» будет именем таблицы

  DB::table('product')->update([ 'key' => $request['key'], 'name' => $request['name']]);
0
По вопросам рекламы ammmcru@yandex.ru
Adblock
detector