Laravel 5.5将要处理的项目的分页更改为2页

时间:2018-05-18 22:15:23

标签: php laravel pagination

我尝试更改分页时图像的显示方式。通常情况下,图像处于纵向模式,并且我将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个项目时,我希望能够告诉分页器将其视为这样。这样它就不会同时显示风景图像和肖像图像,只显示该页面的风景。

1 个答案:

答案 0 :(得分:-1)

if($chapter) {
  $query->where('attachment_id', $chapter);
}

$query->where('language', $language);

$limit = 20;
$query->pagination($limit);