Laravel / Eloquent Paginate在主键上过滤时返回空集合

时间:2016-08-29 17:51:55

标签: php laravel pagination eloquent laravel-5.3

我正在为客户创建一个允许多个选项的搜索表单,包括客户的ID(主键)。

$res = new \App\Customer;

在不是主键的列上进行过滤时,一切正常:

>>> $res = \App\Customer::where('customer_name', 'like', "%frank%")->first();
=> App\Customer {#736}
>>> $res = \App\Customer::where('customer_name', 'like', "%frank%")->paginate(15)->first();
=> App\Customer {#749}

但是,过滤主键然后调用paginate()会返回一个空集合。

>>> $res = \App\Customer::where('id', 3)->first();
=> App\Customer {#669}
>>> $res = \App\Customer::where('id', 3)->paginate(15)->first();
=> null

simplePaginate()工作正常,但我想使用完整paginate()中的其他功能。

(是的,我知道在主键上过滤时我只会获得一条记录,但是如果没有在集合上调用paginate(),我的视图会因为使用{{1}这样的分页方法而中断}},firstItem()lastItem()等。)

2 个答案:

答案 0 :(得分:0)

尝试:

  
    
      

$res = \App\Customer::where('id', 3)->paginate(15);

    
  

答案 1 :(得分:0)

我不确定它为什么会起作用,但是将我的位置转移到模型上的范围方法中可以解决问题。