寻找正确的Laravel路线| 从数据库中获取照片



也许有人可以帮助我解决这个Laravel问题 - 我正在做一个非常简单的作品集项目,我想从数据库中获取一些照片并以简单的flexbox布局发布它们。目前,代码如下:

网络.php

Route::get('/', function () {
$venice_photos = AppVenicePhoto::orderBy('id', 'ASC')
->take(6)
->get();
return view('pages.venice', [
'venice_photos' => $venice_photos,
]);
});

刀片文件 :

<div class="row">
@foreach ($venice_photos as $venicePhoto)
<div class="block block-photo" style="background: url({{$venicePhoto->img}}) no-repeat 50% 50%; background-size: cover;"></div>
@endforeach
</div>

每个div应该从数据库中发布 6 张照片,并且应该至少有 4div秒。但照片不应该重复。我用@if ($venicePhoto->id > 6)尝试了下一个div,但没有成功。所以问题是 - 我在哪里以及如何陈述规则,即每个div中的照片都应该具有唯一的 ID?

您可以使用chunk方法拆分照片集。

chunk方法将集合分解为多个具有给定大小的较小集合:

$collection = collect([$photo1, $photo12, $photo13, $photo14, $photo15, $photo16, $photo17]);
$chunks = $collection->chunk(4);
$chunks->toArray();
// [[$photo11, $photo12, $photo13, $photo14], [$photo15, $photo16, $photo17]]

然后,您必须制作两个 foreach,以便至少有 4 个带有照片的div,以及与照片一样多的div 组。

独特的照片

如果您希望照片不重复,则必须验证它们是否都不同

unique方法返回集合中的所有唯一项。返回的集合保留原始数组键,因此在此示例中,我们将使用 values 方法将键重置为连续编号的索引:

$collection = collect([1, 1, 2, 2, 3, 4, 2]);
$unique = $collection->unique();
$unique->values()->all();
// [1, 2, 3, 4]

最后我用"skip"解决了这个问题:

$venice_photos_2 = AppVenicePhoto::orderBy('id', 'ASC')
->skip(6)
->take(6)
->get();

因此,在每个部分中,我都跳过了之前的照片,并从数据库中发布了接下来的6张照片。但是,如果数据/照片量更大,这将不起作用。

最新更新