【问题标题】:Laravel 5 how paginate with hasMany relationshipLaravel 5 如何与 hasMany 关系进行分页
【发布时间】:2018-09-09 20:36:57
【问题描述】:

我有这样的关系;

public function foods() {
    return $this->hasMany('App\models\food\food', 'category_id', 'id');
}

我的控制器文件内容;

$datas = food_category::where('slug', $slug)->with('foods')->paginate(12);

但是所有数据中的传入数据都会导致性能不佳。我想对应用关系数据进行分页。

【问题讨论】:

标签: laravel relationship


【解决方案1】:

如果您想为foods 分页,请尝试为此添加一个单独的方法:

型号:

class food_category
{
    public function getFoodsPaginatedAttribute()
    {
        return $this->foods()->paginate(12);
    }
}

控制器:

$datas = food_category::where('slug', $slug)->get();

查看:

@foreach ($datas as $data)
    @foreach ($data->foods_paginated as $food)
        {{ $food->name }}
    @endforeach
@endforeach

【讨论】:

  • 这个方法有个缺点,Eager Loading 不起作用。如何使用 ->with() ?
【解决方案2】:

将分页集合传递给视图:

//view
@foreach ($datas as $data)
    // do what you need
@endforeach
//link
{{$datas->links()}}

【讨论】:

    猜你喜欢
    • 2021-07-01
    • 2021-09-24
    • 1970-01-01
    • 1970-01-01
    • 2013-04-03
    • 1970-01-01
    • 1970-01-01
    • 2019-10-02
    • 2018-01-28
    相关资源
    最近更新 更多