【问题标题】:retrieving all photos from database从数据库中检索所有照片
【发布时间】:2020-07-09 05:43:41
【问题描述】:

我正在建立一个分类网站,我正在尝试将其设置为在主页上显示来自数据库的一张照片,在类别页面上显示同一张照片,但是当您查看待售商品的完整页面时,我想要显示该部分中的所有照片。

就像 ebay 如何为广告显示一张照片,但当您点击广告时,它会显示多张照片。

我曾使用“strtok”在我的主页和类别页面中显示单张照片,但现在我不知道如何设置查看页面以显示该项目的所有照片。

这是我在发布列表时保存图像的方式。

public function postHobbies(Request $request){
$this->validate($request, [
'photos' => 'required',
'Photos.*' => 'image|mimes:jpg, png, jpeg, gif, aae, heif, svg|max:2048'
]);

$ads = new Listings;
$images = $request->file('photos');
$count = 0;
if($request->file('photos')){
foreach($images as $item){
if($count < 6){
$var = date_create();
$date = date_format($var, 'Ymd');
$imageName = $date.'_'.$item->getClientOriginalName();
$item->move(public_path().'/uploads/',$imageName);
$url = URL::to("/").'/uploads/'.$imageName;
$arr[] = $url;
$count++;
}
}
$image = implode(",", $arr);
$ads->photos = $image;
$ads->save();
return redirect('/')->with('info', 'Listing published successfully');
}
}

这是我试图在其上发布所有照片的页面的控制器

public function view(Request $request, $id){
$ads = DB::table('listings')
->select ('listings.id', 'photos', 'description', 'year', 'make', 'model', 'price', 'city', 'state', 'email')
->where(['id' => $id])
->get();
$output = '';
if($ads->count() > 0){
return view('users.posted.postedads', ['id'=>$id, 'ads'=>$ads]);
}
}
}

最后,这是我目前传递它的方式,它只是向我展示单张照片,因为我仍在使用“strtok”来确保它有效。所以我假设我需要更改此功能,我只是不知道该使用什么或如何使用它。

<div class="row">
@if(count($ads)>0)
@foreach($ads as $row)

<div class="col-md-12">
<div class="productCard">
<img style=" width:100%;height:100%; " src=<?php echo strtok($row->photos, ',')?> />
</div>
</div>
@endforeach
@else
@endif

【问题讨论】:

  • 没有看到任何与从数据库中提取相关的代码。也许该代码与您的问题相关?
  • 那么你想要一个循环来显示所有图像吗?只需使用 foreach($row as $rows)
  • foreach ($row as $rows) 只是一遍又一遍地给了我第一张图片。如果我只是在这样的标题中打印数据

    ${{$row->photos}}

    它会显示数据库中的所有 4 张图像。
  • @GetSet 我添加了更多代码,谢谢

标签: php html laravel image photo


【解决方案1】:

没有代码很难回答,但在您的控制器中,将它们全部放在一个数组中并将其传递给您的视图。

return view('...', compact('photo_urls');

然后在你的blade.php中你可以像这样简单地循环数组。

@foreach ($photo_urls as $key => $url)
 {{$url}}
@endforeach

【讨论】:

  • 如果您查看更新后的帖子,我想我确实将它们放在另一个控制器中的数组中,也许您可​​以为我提供更多帮助。谢谢
  • 检查阵列中内容的一种非常简单的方法是在刀片文件中执行此&lt;?php dd($photo_urls) ?&gt;。这将为您提供所有值,以便您检查所有内容是否按正确顺序排列。如果要将数组传递给视图,则应在控制器中使用 compact() 函数。
【解决方案2】:

正如其他人所说。没有代码很难回答。

但是从你的strtok 函数来看,我认为你有一个包含所有图片链接的字段。

您可以使用此代码来解决此问题。

$tok = strtok($row->photos, ',');

while ($tok !== false) {
    $output.= '<div class="col-md-3"><div style="text-align: center;">
            <img src=' . $tok . ' style="padding:10px !important;width:50%; height:50%;"/>
            </div></div>';
    $tok = strtok($row->photos, ',');
}

我不知道你为什么不使用explode 函数。到时候就超级简单了。

【讨论】:

  • 我认为explode功能是我想要使用的我只是不知道该怎么做?我已经更新了我的帖子,提供了更多信息,您可能可以帮助我。谢谢
猜你喜欢
  • 2012-09-15
  • 1970-01-01
  • 2011-11-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多