Laravel разбить постраничный красноречивый запрос - PullRequest
0 голосов
/ 12 марта 2020

В настоящее время у меня есть:

$comments = $this->post->comments()
    ->where('comment', 'like', "%{$search}%")
    ->paginate(50);

Но я бы хотел сделать что-то подобное ниже, так как у меня есть несколько фильтров, которые я собираюсь применить:

$comments = $this->post->comments();

if(condition)
{
    $comments->where('comment', 'like', "%{$search}%");
}

$comments->paginate();

Но приведенный выше код не работает, так как я получаю сообщения об ошибках типа $comments->links() для ссылок на страницы в представлении, указывая, что это не работает.

Ответы [ 2 ]

0 голосов
/ 12 марта 2020

Отсутствует $comment = перед предложениями запроса:

$comments = $this->post->comments();

if(condition)
{
    $comments = $comments->where('comment', 'like', "%{$search}%");
}

$comments = $comments->paginate();
0 голосов
/ 12 марта 2020

Вы можете попробовать что-то вроде этого, я не знаю, какую Laravel версию вы используете, также я не знаю структуру ваших моделей, но вот документация об этом примере:

$conditions = 1;
$comments = Post::with('comments')
                ->whereHas('comments', function ($query) use ($conditions){
                      // pass your conditions
                      if(!$conditions){
                          $query->where('comment', 'like', "%%")
                      }
                      // more conditions, etc
                      $query->where('comment_id', 'like', '%%');
                 })->paginate(50);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...