gpt4 book ai didi

laravel-4 - 如何在 Laravel 中对对象数组进行分页?

转载 作者:行者123 更新时间:2023-12-02 23:40:47 31 4
gpt4 key购买 nike

我正在使用 Laravel 4.2 构建一个应用程序。我有一个单位模型,另一个用户模型和数据透视表user_units。该应用程序中的每个用户都可以选择一个单元并将其添加到他最喜欢的列表中,然后他可以将该单元及其信息作为广告发布。

我想选择所有用户发布的所有单元

user_units(透视)表包含以下列:

id   
user_id
unit_id
publish
adtype
addinfo
created_at
updated_at

使用模型上的关系方法

public function users() {
return $this->belongsToMany('User', 'user_units')
->withPivot('id','publish', 'adtype', 'addinfo');
}

public function units() {
return $this->belongsToMany('Unit', 'user_units')
->withPivot('id','publish', 'adtype', 'addinfo');
}

我的查询选择所有用户的所有已发布单元

// Get all published units by users for sale. 
$users = User::all();
$publishedSaleUnits = [];
foreach($users as $user){
$userUnits = $user->units()->orderBy('adtype', 'desc')->get();
if(count($userUnits)){
foreach($userUnits as $unit){
if($unit->pivot->publish == 1 && $unit->unit_purpose_id == 1){
if( $unit->pivot->adtype ){
//push all featured ads onto the beginning of array
array_unshift($publishedSaleUnits, $unit);
}else{
//push all normal ads onto the end of array
array_push($publishedSaleUnits, $unit);
}
}
}
}
}

现在我得到了结果,但我无法对结果使用分页,因为它是一个对象数组。

那么有没有更好的解决方案来通过分页获取用户所有发布的单元?

最佳答案

根据这篇文章 https://www.itsolutionstuff.com/post/how-to-create-pagination-from-array-in-laravelexample.html

您可以通过创建自定义方法并使用 LengthAwarePaginator 对数组进行分页

namespace App\Http\Controllers;

use Illuminate\Http\Request;
use Illuminate\Pagination\Paginator;
use Illuminate\Support\Collection;
use Illuminate\Pagination\LengthAwarePaginator;

class PaginationController extends Controller
{
public function index()
{
$myArray = [
['id'=>1, 'title'=>'Laravel CRUD'],
['id'=>2, 'title'=>'Laravel Ajax CRUD'],
['id'=>3, 'title'=>'Laravel CORS Middleware'],
];

$data = $this->paginate($myArray);
return view('paginate', compact('data'));
}

public function paginate($items, $perPage = 5, $page = null, $options = [])
{
$page = $page ?: (Paginator::resolveCurrentPage() ?: 1);
$items = $items instanceof Collection ? $items : Collection::make($items);
return new LengthAwarePaginator($items->forPage($page, $perPage), $items->count(), $perPage, $page, $options);
}
}

关于laravel-4 - 如何在 Laravel 中对对象数组进行分页?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27064953/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com