Laravel создать массив сообщений с несколькими изображениями - PullRequest
1 голос
/ 11 января 2020

Я хочу добавить сообщения с несколькими изображениями, например, у меня есть страница, когда пользователь нажимает + он будет добавлять сообщения с изображениями

public function store(Request $request) {
    $this->validate($request, [
        'blocks.*' => 'required',
        'blocks.*.position' => 'required',
        'blocks.*.block_title' => 'required|max:100',
        'blocks.*.block_text' => 'required|max:500',
        'images' => 'required',
        'images.*' => '|mimes:jpeg,jpg,png,gif,svg|max:10240',
    ]);
    // ...
}

Здесь я создал переменную блоков

$blocks = $request->blocks;

foreach ($blocks as $block) {
    $newsBlock = Block::create([
        'news_id' => $news->id,
        'position' => $block['position'],
        'block_title' => $block['block_title'],
        'block_text' => $block['block_text']
    ]);
    $newsBlock->save();
    // ...
}

Здесь переменная для хранения изображений, но все блоки имеют одинаковые изображения

        // ....
        $images = $request->images;

        foreach ($images as $image) {
            $randomString = uniqid();
            $filename = $randomString . $image->getClientOriginalName();
            $filePath = 'uploads/blocks/' . $newsBlock->id . '/';
            Storage::disk('local')->put($filePath, $filename);
            $blockImage = Image::create([
                'block_id' => $newsBlock->id,
                'image_path' => $filePath.$filename
            ]);
            $blockImage->save();
        }

    }
    return response()->json($news, 201);
}

1 Ответ

0 голосов
/ 15 января 2020
            $images = $request->file('images.*');
             $data  = [];
             foreach ($images as $image ) {
               $ff = count($image);
                 $data [] = $ff;
              }
                 $f = count($images);
    $positions = $request->position;
    $c = count($positions);
    for($i=0;$i<$c;$i++) {
        $item = new Block();
        $item->news_id = $news->id;
        $item->position = $request->position[$i];
        $item->block_title = $request->block_title[$i];
        $item->block_text = $request->block_text[$i];
        $item->save();
        for($j=0;$j<$data[$i];$j++) {
            $randomString = uniqid();
            $filename = $randomString . $images[$i][$j]->getClientOriginalName();
            $filePath = 'uploads/blocks/' . $item->id . '/';
            $images[$i][$j]->storeAs($filePath, $filename);
            $blockImage = Image::create([
                'block_id' => $item->id,
                'image_path' => $filePath . $filename
            ]);
            $blockImage->save();

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