построитель запросов laravel, необязательные параметры поиска

Новичок в Laravel ищет руководство. Может ли кто-нибудь показать мне лучший способ добавить необязательные опубликованные параметры поиска в следующий запрос Eloquent и вернуть все связанные данные и разбить на страницы? Необязательными параметрами поиска являются внешние ключи; ид_страны, ид_сезона и ид_параметра.

$dataitems = Dataitem::orderBy('name')->with('country')->with('season')->with('parameter')->paginate(10);

Я читаю документы и видел беглый построитель запросов. Я просто изо всех сил пытаюсь воссоздать этот красиво разбитый на страницы запрос.

Большое спасибо.


person Charles Jackson    schedule 04.08.2014    source источник


Ответы (1)


Я не уверен, понимаю ли я, что вы хотите. Но я бы сделал что-то вроде этого:

  • Создайте свой базовый красноречивый запрос:

    $query = Dataitem::orderBy('name');
    
  • Если у вас есть определенный параметр, добавьте условие в существующий запрос. Вы можете повторить это, если заблокируете все ваши необязательные параметры.

    if (Input::has('country_id'))
    {
        $query->whereHas('country', function($q){
            $q->where('id', '=' ,Input::get('country_id'));
        });
    }
    
  • Когда вы закончите, разбейте на страницы:

    $query->paginate(10);
    
person Needpoule    schedule 04.08.2014
comment
Спасибо, вы звезда! - person Charles Jackson; 04.08.2014
comment
но почему в моем тесте этот код возвращает экземпляр компоновщика, а не lengthawarepaginator? - person Bryan Estrito; 31.03.2016
comment
Попробуйте $results = $query-›paginate(10) и используйте $results для разбивки на страницы? - person Needpoule; 31.03.2016