【问题标题】:LRAVEL 8 paginate does not exist, i need select data by region_id and paginate itLARAVEL 8 分页不存在,我需要按区域 ID 选择数据并对其进行分页
【发布时间】:2021-01-31 07:52:18
【问题描述】:

我在 Laravel 文档中找到了 paginate() 方法。但是,当我实施它时它不起作用。我收到分页不存在的错误。我知道分页可能只适用于 all(),但我只需要几列,并且我需要像在 show 方法中那样按区域选择数据。如何重写索引和显示方法以使其工作?

索引法

public function index()
{

    $tournaments =  Tournament::latest()
        ->get(['title', 'city', 'date_starter_at', 'slug'])->paginate(12);

    $regions = Region::all();
}

显示方法

public function show(Tournament $tournament)
{
    return view('tournaments.show', [ 'tournament' => $tournament,
        'regions' => Region::where("id", "=", $tournament->region_id)->get(),
        ]);
    

    return view('tournaments.index', [
    'regions' => $regions,
            'tournaments' => $tournaments,
        ]);
}

【问题讨论】:

  • 你不能在get方法之后使用paginateTournament::latest()->select(['title', 'city', 'date_starter_at', 'slug'])->paginate(12);`

标签: php laravel laravel-8 laravel-controller laravel-datatables


【解决方案1】:

您正在对集合调用分页。您应该在查询构建器实例上调用它。

public function index()
{
    $tournaments =  Tournament::select(['title', 'city', 'date_starter_at', 'slug'])
                                ->latest()
                                ->paginate(12);
    $regions = Region::all();

    return view('tournaments.index', compact('tournaments', 'regions');
}

public function show(Tournament $tournament)
{
    $tournament->load('region');

    return view('tournaments.show', compact('tournament'));
}

您还可以通过添加Tournament 的关系并将其加载到show 方法中来稍微整理一下代码。

Tournament.php

public function region()
{
    return $this->belongsTo(Region::class);
}

【讨论】:

  • 我怎样才能改变我的分页显示方法?谢谢。
  • 为什么要对show 方法进行分页?它只返回一个模型。
猜你喜欢
  • 2021-08-06
  • 1970-01-01
  • 2017-09-19
  • 2021-09-27
  • 2020-02-26
  • 2019-10-02
  • 1970-01-01
  • 2017-06-15
  • 2021-02-05
相关资源
最近更新 更多