Laravel поиск во вложенных отношениях - PullRequest
0 голосов
/ 22 марта 2020

У меня проблема с моей поисковой системой в Laravel. У меня есть 3 модели: Post, Comment и CommentUser.

Мои отношения таковы: у Post много комментариев, и у комментария есть один пользователь. Я хочу создать поиск для этих отношений. Теперь у меня есть следующий код:

$posts = Post::where('page_id', Auth::user()->page)
            ->with([
                'comments' => function($q) use($sort, $search) {
                    if($search){
                        $q->where('content', 'like', '%'.$search.'%');
                    }
                    if($sort == 'answered'){
                        $q->where('answered', '=', 1);
                    }
                    if($sort == 'new'){
                        $q->where('answered', '=', 0);
                    }
                },
                'comments.user' => function($q) use($sort, $search) {
                    if($search){
                        $q->where('name', 'like', '%'.$search.'%')
                        ->orWhere('lastname', 'like', '%'.$search.'%');
                    }
                },
            ])
            ->whereHas('comments', function($q) use($sort, $search){
                if($search){
                    $q->where('content', 'like', '%'.$search.'%');
                }
                if($sort == 'answered'){
                    $q->where('answered', '=', 1);
                }
                if($sort == 'new'){
                    $q->where('answered', '=', 0);
                }
            })
            ->orWhereHas('comments.user', function($q) use($search){
                if($search){
                    $q->where('name', 'like', '%'.$search.'%')
                        ->orWhere('lastname', 'like', '%'.$search.'%');
                }
            })
            ->orderBy('created_at', 'asc')
            ->paginate(10);

Я пытаюсь использовать next с и orWhereHas, но не работает, потому что, например, когда у меня есть комментарии, такие как "наилучшие пожелания", у меня нет пользователя с этим именем или фамилия и наоборот. Я хочу, чтобы поисковые посты поиска, где содержание комментариев похоже на поисковый запрос, или посты, где имя пользователя или фамилия похожи на поисковый запрос, но теперь два варианта не принимаются.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...