也许有人可以帮助我解决这个Laravel问题-我正在做一个非常非常简单的项目,我想从数据库中获取一些照片,并将它们以简单的flexbox布局发布。目前,代码如下:
web.php
Route::get('/', function () {
$venice_photos = \App\VenicePhoto::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张照片,并且应该至少有4个div。但是照片不应该重复。我用@if ($venicePhoto->id > 6)尝试了下一个div,但没有起作用。所以问题是-我在哪里以及如何声明规则,即每个div中的照片应该具有唯一的id?
发布于 2020-05-14 03:34:49
您可以使用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]发布于 2020-05-15 02:24:02
最后我用“skip”解决了这个问题:
$venice_photos_2 = \App\VenicePhoto::orderBy('id', 'ASC')
->skip(6)
->take(6)
->get();因此,在每个部分中,我跳过了前面的照片,并从数据库中发布了接下来的6张照片。但是,如果数据/照片的数量更大,这将不起作用。
https://stackoverflow.com/questions/61782820
复制相似问题