2016-08-29 4 views
0

Я работаю над созданием формы поиска для клиентов, которая позволяет использовать несколько опций, включая идентификатор клиента (первичный ключ).Laravel/Eloquent Paginate возвращает пустую коллекцию при фильтрации первичного ключа

$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() на множестве мой взгляд сломается, как он использует методы разбивки на страницы, такие как firstItem(), lastItem(), total() и т.д.)

+0

Я только что попробовал это на v5.3.4 и не имел проблем. Вы уверены, что не делаете ничего другого? – Samsquanch

+0

Ничего другого, вышеупомянутый выход прямо из вола. Я даже создал новый проект, в котором нет ничего, кроме пустой модели, и получаю точно такой же результат. Был на v5.3.2, только что обновлен до v5.3.4 - тот же результат. – Shawn

ответ

0

Try:

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

+0

Это идентично моему коду выше. Я только что добавил -> first(), чтобы вытащить первую запись, возвращенную для целей тестирования. – Shawn

0

Я точно не знаю, почему это работает, но шевелить где в метод области видимости на модели исправили проблему.

Смежные вопросы