php - Laravel 5.5 将项目的分页更改为 2 页
问题描述
我正在尝试更改图像在分页时的显示方式。通常图像处于纵向模式,并且我将 perPage 设置为 2(因此每页有 2 张图像,因此看起来像一本书),但随后有横向图像最终与纵向图像混合在一起。所有图像都有一个宽度和高度列来识别它是横向还是纵向。
我希望能够告诉分页器将所有横向项目视为 2 页而不是单页。
这是我当前的代码:
/**
* The attributes on which the comic list can be ordered
* @var array
*/
public static $allowedSortingOptions = [
'sort_order desc' => 'Sort Order (descending)',
'random' => 'Random'
];
/**
* Lists images for the front end
*
* @param $query
* @param array $options Display options
*
* @return File
*/
public function scopeListFrontEnd($query, $options)
{
/*
* Default options
*/
extract(array_merge([
'page' => 1,
'perPage' => 1,
'sort' => 'sort_order',
'chapter' => null,
'language' => 'en'
], $options));
if($chapter) {
$query->where('attachment_id', $chapter);
}
$query->where('language', $language);
/*
* Sorting
*/
if (!is_array($sort)) {
$sort = [$sort];
}
foreach ($sort as $_sort) {
if (in_array($_sort, array_keys(self::$allowedSortingOptions))) {
$parts = explode(' ', $_sort);
if (count($parts) < 2) {
array_push($parts, 'desc');
}
list($sortField, $sortDirection) = $parts;
if ($sortField == 'random') {
$sortField = Db::raw('RAND()');
}
$query->orderBy($sortField, $sortDirection);
}
}
$images = $query->paginate($perPage, $page);
return $images;
}
更清晰地编辑:
横向图像相当于 2 页。$perPage
当我设置为每页 2 个项目时,我希望能够告诉分页器这样处理它。这样它就不会同时显示横向图像和纵向图像,只显示该页面的横向图像。
解决方案
if($chapter) {
$query->where('attachment_id', $chapter);
}
$query->where('language', $language);
$limit = 20;
$query->pagination($limit);
推荐阅读
- eclipse - 如何使用 IDE 开发 kapua(如 eclipse 或 jetbrain idea)
- javascript - React - 使用 .map() 时处理空数组
- javascript - JS 在谷歌图表中使用类方法 setOnLoadCallback
- javascript - 如何在上传前更改输入文件名
- azure - 我在 Azure 堡垒中创建了 VM,但我想通过浏览器访问 VM,而不是从 Azure 门户访问,那么该怎么做呢?
- flutter - 将 Firebase 用户模型升级为空安全
- javascript - 在 Javascript 文件中使用 jQuery.each() 时,下拉列表中未填充数组中的数据
- java - 在 LiveData 中调用 onChanged 事件时进行编辑
- awk - awk grep 或 sed:如何匹配两个文件
- apache - 使用端口重定向服务器?