Laravel - 在视图中显示我的数组图像,这些图像存储在我的数据库中的一行中

Posted

技术标签:

【中文标题】Laravel - 在视图中显示我的数组图像,这些图像存储在我的数据库中的一行中【英文标题】:Laravel - Display my array images in view that is stored in one ROW in my Database 【发布时间】:2019-04-27 03:02:39 【问题描述】:

我想在一行中显示我的数据库中显示的所有图像。这些图像存储在我数据库中的一个数组中,因此它位于一行中。目前在我的代码中,图像未显示,并且不可用

这是我的控制器

存储数据

    $this->validate($request, [
        'promotion_image' => 'required'
    ]);

    if ($request->has('promotion_image'))
       
        //Handle File Upload

        $promotion = [];
        foreach ($request->file('promotion_image') as $key => $file)
        
            // Get FileName
            $filenameWithExt = $file->getClientOriginalName();
            //Get just filename
            $filename = pathinfo( $filenameWithExt, PATHINFO_FILENAME);
            //Get just extension
            $extension = $file->getClientOriginalExtension();
            //Filename to Store
            $fileNameToStore = $filename.'_'.time().'.'.$extension;
            //Upload Image
            $path = $file->storeAs('public/promotion_images',$fileNameToStore);
            array_push($promotion, $fileNameToStore);
        

        $fileNameToStore = serialize($promotion);
    
    else
    
        $fileNameToStore='noimage.jpg';
    


if (count($promotion)) 
        $implodedPromotion = implode(' , ', $promotion);
        $promotionImage = new Promotion;
        $promotionImage->promotion_image = $implodedPromotion;
        $promotionImage->save();

        return redirect('/admin/airlineplus/promotions')->with('success', 'Image Inserted');
    

    return redirect('/admin/airlineplus/promotions')->with('error', 'Something went wrong.');

这是我的视图

 @foreach($promotions as $promotion)
           <tr>  

            <th><img src=" asset('storage/promotion_images/' . $promotion->promotion_image) " style="width:50px;height:50px;"></th>
 @endforeach

【问题讨论】:

检查您的控制台。它将显示无法加载的图像 URL。根据该 URL,您需要修改图像路径。你能告诉你控制台错误吗? 请查看新的编辑。我添加了问题..没有错误只是图像没有显示 @BanujanBalendrakumar 我编辑上面的问题请看图片..它没有错误,我的问题是图片没有显示 该错误仅显示在控制台中。你应该检查你的路径。右键单击图像并单击Open Image in New Tab 然后显示图像URL,并显示目录树。 @BanujanBalendrakumar 我这样做了,据说找不到页面 【参考方案1】:

您为存储图像所做的一切似乎还不错,您要做的就是在数据库中分解图像数据存储。所以,像这样改变你的视图代码:

@foreach($promotions as $promotion)
       <tr>  

        <th>
            @foreach(explode(',' ,$promotion->promotion_image) as $image)
                <img src=" asset('storage/promotion_images/' . $image) " style="width:50px;height:50px;"><br/>
            @endforeach
        </th>
     </tr>
@endforeach

我认为这对你有用。如果您对上述代码有任何困惑,请随时提问。

【讨论】:

SO CLOSE ... 它存储 1 个值 .. 其他图像不可用,为什么会这样 @SummerWinter 能否请您更详细地描述一下,以便我可以帮助您 我有一个使用 jquery 的动态表单,所有图像都存储在一个 ROW 中。你的代码只显示了 1 个图像我的数据库中有 2 个图像。所以另外 1 个图像是未显示在我的视图中。 @SummerWinter 请添加数据库表截图 嘿先生你能回答我的这个问题吗link【参考方案2】:
if (count($promotion)) 
        $implodedPromotion = implode(' , ', $promotion);
        $promotionImage = new Promotion;
        $promotionImage->promotion_image = $implodedPromotion;
        $promotionImage->save();

        return redirect('/admin/airlineplus/promotions',$promotion)->with('success', 'Image Inserted');
    

    return redirect('/admin/airlineplus/promotions',$promotion)->with('error', 'Something went wrong.');

【讨论】:

你能解释一下你的答案吗? 那是什么?它似乎对我没有帮助

以上是关于Laravel - 在视图中显示我的数组图像,这些图像存储在我的数据库中的一行中的主要内容,如果未能解决你的问题,请参考以下文章

Laravel 5.2 - 显示数据库中的第一张图片

laravel:将视图插入数组

Laravel - 在数据库视图中显示数组/字符串对象

Laravel - 在数据库中保存或插入图像数组 - Laravel

如何以及在哪里可以用laravel存储图像?

Laravel 8:在刀片视图上过滤/显示数据,数组保存在数据库中