Mel*_*ans 34 php pagination laravel
我的分页遇到了一些麻烦.我有两个表来自数据库中的数据,我用laravel Paginator对它进行了分页.
现在我的问题是当你去,例如,第2页它添加?page = 2但这使第一个表也转到第2页.
反正有没有得到这样的东西?
page_table1={number}&page_table2={number}
所以你不要在其他表上应用页面更改.
ano*_*nym 39
$publishedArticles = Article::paginate(10, ['*'], 'published');
$unpublishedArticles = Article::paginate(10, ['*'], 'unpublished');
Run Code Online (Sandbox Code Playgroud)
第三个参数使用如下:
laravel /公/文章?发表= 3
laravel /公/文章?未公布= 1
daV*_*aVe 26
这是我在Laravel 4上找到的一个简单的解决方案.
调节器
在创建分页器之前更改页面名称:
Paginator::setPageName('page_a');
$collection_A = ModelA::paginate(10);
Paginator::setPageName('page_b');
$collection_B = ModelB::paginate(10);
Run Code Online (Sandbox Code Playgroud)
视图
执行相同操作:在打印链接之前更改页面名称
Paginator::setPageName('page_a');
$collection_A->links();
Paginator::setPageName('page_b');
$collection_B->links();
Run Code Online (Sandbox Code Playgroud)
如果您不希望在导航到其他页面时丢失任何页面状态,请将链接附加到所有集合的当前页面:
Paginator::setPageName('page_a');
$collection_A->appends('page_b', Input::get('page_b',1))->links();
Paginator::setPageName('page_b');
$collection_B->appends('page_a', Input::get('page_a',1))->links();
Run Code Online (Sandbox Code Playgroud)
Dam*_*rsy 21
不幸的是我现在无法测试这段代码,但浏览文档和代码(in Illuminate/Pagination/Environment)我想你可能会这样:
# use default 'page' for this
$collection1 = Model::paginate(20);
# use custom 'other_page' for this
$collection2 = Model2::paginate(20);
$collection2->setPageName('other_page');
Run Code Online (Sandbox Code Playgroud)
该setPageName()方法没有记录在文档中,但它是一个公共方法以及文档中指出的方法,所以它应该工作正常.参考,这是声明(l.171-180 in vendor/laravel/framework/src/Illuminate/Pagination/Environment.php):
/**
* Set the input page parameter name used by the paginator.
*
* @param string $pageName
* @return void
*/
public function setPageName($pageName)
{
$this->pageName = $pageName;
}
Run Code Online (Sandbox Code Playgroud)
现在考虑到你将在url中附加另一个查询字符串,所以你需要告诉分页考虑它.使用appends()方法:
$collection1->appends(array_except(Request::query(), 'page'))->links();
$collection2->appends(array_except(Request::query(), 'other_page'))->links();
Run Code Online (Sandbox Code Playgroud)
也就是说,告诉每个Presenter使用所有查询字符串构建url(由Request::query() 没有 paginator使用的当前索引产生的数组,或者你最终得到一个double值).array_except()是一个内置于数组助手中的Laravel,它返回已传递索引(第二个参数)的给定数组(第一个参数).
我会尽快测试这段代码,但它应该可行.无论如何,让我知道!
mos*_*eim 15
在laravel 5.3(maibe在其他laravel 5版本中工作),我使用如下:
$produk = Produk::paginate(5, ['*'], 'produk');
$region = Region::paginate(5, ['*'], 'region');
Run Code Online (Sandbox Code Playgroud)
并且在叶片模板中附加其他的电流来保持位置:
{{$produk->appends(['region' => $region->currentPage()])->links()}}
{{$region->appends(['produk' => $produk->currentPage()])->links()}}
Run Code Online (Sandbox Code Playgroud)
Laravel 5.7
Model->paginate(10, ['*'], 'paramName');
10 = Max items per page
['*'] = colums
paramName = pagination param name
Run Code Online (Sandbox Code Playgroud)
照亮\数据库\口才\生成器
在Laravel 5.2中,使用时声明页面名称paginate().
这是一个适用于页面上多个分页器的示例.
$pageName为其他型号指定其他型号.看方法 \Illuminate\Database\Eloquent\Builder::paginate()
/**
* Get things by ownerId
*
* @param integer $ownerId The owner ID.
*
* @return \Illuminate\Contracts\Pagination\LengthAwarePaginator Returns a pagination instance.
*/
public function getThings($ownerId)
{
$builder = \App\Models\Things::where('ownerId', '=', (integer) abs($ownerId));
// dd([
// '__METHOD__' => __METHOD__,
// '__FILE__' => __FILE__,
// '__LINE__' => __LINE__,
// '$ownerId' => $ownerId,
// 'sql' => $builder->toSql(),
// '$builder' => $builder,
// 'paginate' => $builder->paginate($perPage = null, $columns = ['*'], $pageName = 'p', $page = null),
// ]);
return $builder->paginate($perPage = null, $columns = ['*'], $pageName = 'p', $page = null);
}
Run Code Online (Sandbox Code Playgroud)
注意: $pageName = 'p'
| 归档时间: |
|
| 查看次数: |
23127 次 |
| 最近记录: |