Обновление нескольких изображений Laravel - PullRequest
2 голосов
/ 09 июля 2019

У меня есть две связанные таблицы, одна из которых является таблицей products, а другая - таблицей products_photos. В таблице products_photos есть столбцы id, product_id и filename. Я пытаюсь редактировать несколько изображений при редактировании продукта. Я получаю ошибку

Метод Illuminate\Http\Request::photos не существует.

Как я могу редактировать несколько изображений одновременно?

Вот как я создаю несколько изображений:

public function store(Request $request) 
{ 
    foreach ($request->photos as $photo) {
        $filename = $photo->store('public/photos');
        ProductsPhoto::create([
            'product_id' => $product->id,
            'filename' => $filename
        ]);
    } 
    return redirect()->back(); 
}

Вот так я редактирую несколько изображений:

$image = Product::with('ProductsPhoto')
    ->where('id', $request->product_id)
    ->first();

if($request->photos('photos')) {
    if(file_exists($image ->photos)){
        unlink($image ->photos);
    }
    $filename = $photos->store('public/photos');
    ProductsPhoto::create([
        'product_id' => $product->id,
        'filename' => $filename
    ]);
} else {
    $image = $photos->store('public/photos');
}

$product = Product::with('ProductsPhoto')
    ->find($request->product_id);

$product->filename = $product->ProductsPhoto[0]->filename;
$product->save();

Шаблон лезвия:

<input multiple="multiple" name="photos[]" type="file"> 

1 Ответ

0 голосов
/ 09 июля 2019

Ошибка в $request->photos('photos').Для класса запроса "photos" не существует метода.

Я думаю, вы хотели бы сделать:

if($request->hasFile('photos')) {}

или

if($request->has('photos')) {}

Также из вашего фрагмента:

$image = Product::with('ProductsPhoto')->where('id',$request->product_id)->first();
...

if(file_exists($image ->photos)){
    unlink($image ->photos);
}

переменная $ image является объектом Product, и в вашей таблице нет столбца photos , поэтому $ image-> photos всегда будет нулевым.Скорее, я думаю, что вы намеревались пройтись по $image->ProductsPhoto и получить $each->filename.

Но я должен сказать, что в вашей кодовой базе есть много ошибок, я бы посоветовал вам действительно отладить это:

  • Вы не просматриваете несколько файлов в обновлении
  • Вы пытаетесь заменить все предыдущие изображения (если ранее было 3 изображения, а сейчас я отправляю два, хотите ли вы?3 ушли и заменили на новые два?).Потому что это также не очень ясно.

среди других.

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