Laravel - 分页和获取() [英] Laravel - Paginate and get()

查看:18
本文介绍了Laravel - 分页和获取()的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

使用下面的代码,我想要的是对我创建的查询进行分页.但是,当我尝试在 get 之后添加分页时,它会引发错误.我想保持 get 因为我想限制在 $fields 上设置的列.对这件事进行分页应该是什么更好的主意?或者什么是获取和限制列的好替代品?

With the code below, what I wanted was paginate the query I created. But, when I try to add paginate after get, it throws an error. I wanted to remain get since I want to limit to columns that was set on $fields. What would should be the better idea to paginate this thing? or what's a good substitute for get and limit the columns?

我尝试了什么:

->get($this->fields)->paginate($this->limit)

我的控制器的一部分:

class PhonesController extends BaseController {

    protected $limit = 5;
    protected $fields = array('Phones.*','manufacturers.name as manufacturer');
    /**
     * Display a listing of the resource.
     *
     * @return Response
     */
    public function index()
    {



        if (Request::query("str")) {
            $phones = Phone::where("model", 'LIKE', '%'. Request::query('str') . '%')
                        ->join('manufacturers', 'manufacturers_id', '=', 'manufacturers.id')
                        ->get($this->fields);

        } else {
            $phones = Phone::join('manufacturers', 'manufacturers_id', '=', 'manufacturers.id')
                            ->get($this->fields);
        }



        return View::make('phones.index')->with('phones', $phones);
    }

}

推荐答案

如果你看看 方法签名 你会看到 paginate 接收到第二个参数 $columns.所以你的解决方案是使用

If you look at the method signature you will see that paginate receives a second argument, $columns. So your solution would be to use

->paginate($this->limit, $this->fields);

此外,您可以通过稍微改变一些东西来清理您的控制器:

Furthermore, you can clean up your controller by changing things slightly:

public function index()
{

    $query = Phones::join('manufacturers', 'manufacturers_id', '=', 'manufacturers.id');

    if ( Request::query('str') ) {
        $query->where('model', 'LIKE', '%'. Request::query('str') . '%')
    }

    $phones = $query->paginate($this->limit, $this->fields);

    return view('phones.index')->with('phones', $phones);
}

这篇关于Laravel - 分页和获取()的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆