Laravel 我尝试复制一个对象,并在每个对象中添加图片

Laravel 我尝试复制一个对象,并在每个对象中添加图片,laravel,Laravel,我有一个房间要加。还有一些字段称为片段。如果用户已写入所有字段,则为房间选择图片。写了5篇。我想在同一个房间里添加5件选定的字段和照片。也就是说,将同一对象复制为多个片段 RoomController存储功能 public function store(Request $request) { $request->validate([ 'title.*' => 'required', 'content.*'

我有一个房间要加。还有一些字段称为片段。如果用户已写入所有字段,则为房间选择图片。写了5篇。我想在同一个房间里添加5件选定的字段和照片。也就是说,将同一对象复制为多个片段

RoomController存储功能

    public function store(Request $request)
    {
        $request->validate([
            'title.*' => 'required',
            'content.*' => 'required',
            'people' => 'required',
            'hotel_id' => 'required',
            'night_price' => 'required',
            'pieces' => 'required',
            'single_bed' => 'required',
            'double_bed' => 'required',
            'roomImages' => 'required',
            'roomImages.*' => 'image|mimes:jpeg,png,jpg,gif,svg|max:2048'
        ]);

        $rooms = array_fill(1, $request->get('pieces'), $request->all());
        foreach ($rooms as $room){
            dd($rooms);
            $obj = new Room();
            // Set translations
            $obj->setTranslations('title', $room['title']);
            $obj->setTranslations('content', $room['content']);

            // Save object
            $obj->amenities = $room['amenities'];
            $obj->fill($room);
            $obj->save();

            foreach ($room['roomImages'] as $file) {
                $file_name = time() . '_' . md5($file->getClientOriginalName()) . '.' . $file->getClientOriginalExtension();
                $file->move(public_path('/uploads/rooms/'), $file_name);
                // Save image in Model Image
                $file = new Image();
                $file->src = $file_name;
                $obj->file()->save($file);
            }
        }


        return redirect()->route('rooms.index');
    }
错误


foreach的一个圆正在运行,添加了带有图片的对象。在第二圈,foreach停止并显示此错误,因此在创建图像模型时,您的问题似乎覆盖了
$file

foreach ($room['roomImages'] as $file) {
    $file_name = time() . '_' . md5($file->getClientOriginalName()) . '.' . $file->getClientOriginalExtension();
    $file->move(public_path('/uploads/rooms/'), $file_name);
    // Save image in Model Image
    // Updated variable name
    $image = new Image();
    $image->src = $file_name;
    // save Model
    $image->save();
    $obj->file()->save($file);
}
试试下面的代码

foreach ($request->roomImages as $file) {
    $file_name = time() . '_' . md5($file->getClientOriginalName()) . '.' . $file->getClientOriginalExtension();
    $file->move(public_path('/uploads/rooms/'), $file_name);
}

$rooms = array_fill(1, $request->get('pieces'), $request->all());
foreach ($rooms as $key => $room){
    $obj = new Room();
    // Set translations
    $obj->setTranslations('title', $room['title']);
    $obj->setTranslations('content', $room['content']);

    // Save object
    $obj->amenities = $room['amenities'];
    $obj->fill($room);
    $obj->save();


    \File::copy(public_path('/uploads/rooms/'.$file_name), public_path('/uploads/rooms/'.$key.$file_name));

    $file = new Image();
    $file->src = $key.$file_name;

    $obj->file()->save($file);
}
\File::delete(public_path('/uploads/rooms/'.$file_name));

移动功能将从原始请求中删除文件。因此,当循环第二次运行时,您会遇到错误。

我相信可能对您有用。我的情况不同。谢谢你的帮助!:)你能创建公共git存储库并共享吗?这个项目是我的第一个订单。我不认为客户会喜欢我把它公开。请告诉我您需要哪部分代码,我将向您展示。查看您的数据库结构并了解其中一些需要复制的原因可能会有所帮助。我们的示例图像只添加了一次。我的目标循环中的每个房间都有自己的图像并添加它们。我已经更新了代码。谢谢,非常帮助我!:)