如何在Laravel中使用查询结果并使用LIKE语句再次查询

时间:2019-12-09 21:39:51

标签: php sql laravel laravel-5

我正在尝试使用问题结果,如果标题中包含一些字符,则再次获得问题。 如果我在condition_question表中查询,则会得到预期的结果。

public function showQuestions($category)
    {
        $myArray = array($category);

        $questions = Question::whereIn('question_id', function ($query) use ($myArray) {
            $query->select('question_id')
                ->from('condition_question')
                ->whereIn('condition_id', $myArray);
        })->orderBy('question_id', 'desc')->paginate(20);

        return QuestionLiteResource::collection($questions);
}

问题:现在如何使用$ questions结果并使用LIKE语句再次查询。到目前为止,我尝试了很多事情,例如这样,但是由于出现错误,某些东西丢失了:

public function showQuestions($category, $queryQuestion)
    {
        $myArray = array($category);

        $chary = $queryQuestion;

        $questions = Question::whereIn('question_id', function ($query) use ($myArray) {
            $query->select('question_id')
                ->from('condition_question')
                ->whereIn('condition_id', $myArray);
        })->get();

        $results = $questions->where('question_title', 'LIKE', "%{$chary}%")->get();

        return QuestionLiteResource::collection($results->values());
}

我知道这不是我最好的,但是需要一些帮助...最后获得分页的结果也很酷。 因此,如何从标题为char的问题表中获取问题集合。任何帮助都将受到欢迎!

3 个答案:

答案 0 :(得分:1)

您可能知道,一旦调用get()函数,就得到了结果并且无法进一步查询。也许这会起作用:

public function showQuestions($category, $queryQuestion)
    {
        $myArray = array($category);

        $chary = $queryQuestion;

        $questions = Question::whereIn('question_id', function ($query) use ($myArray) {
            $query->select('question_id')
                ->from('condition_question')
                ->whereIn('condition_id', $myArray);
        })
        ->where('question_title', 'LIKE', "%{$chary}%")
        ->get();

        return QuestionLiteResource::collection($questions);
}

答案 1 :(得分:1)

由于您在问题查询中致电了 shellAnimals.CurrentItem = shellBears; ,因此您得到的结果为get()

要通过集合进行过滤,可以使用Laravel Collection函数。

示例代码

filter()

答案 2 :(得分:0)

      <div class="container-fluid">
      <div class="row">
        <div class="col-md-12 col-6">1 one</div>
        <div class="col-md-12 col-6">2 two</div>
        <div class="col-lg-12">3 three</div>
      </div>
    </div>