Получить массивы с нулевыми значениями, Laravel - PullRequest
1 голос
/ 27 мая 2020

У меня есть запрос, в котором я пытаюсь получить какое-то значение при определенных условиях, проблема в том, что в конце я получаю список массивов (например, 4), но значение поля равно нулю. Не знаю, почему ... если некоторые условия не выполняются, я не ожидаю получить ничего, а не массив с нулевыми значениями.

$questions = MyModel::select(
        'answer_statistics.id',
        'answer_statistics.paragraph_id',
        'paragraphs.free_text as free_text',
        'paragraphs.id as paragraph_id',
        'questions.best_match as best_match'
        )
        ->whereNotNull('answer_statistics.paragraph_id')
        ->leftJoin('paragraphs', 'answer_statistics.paragraph_id', 'paragraphs.id')
        ->leftJoin('questions', 'paragraphs.question_id', 'questions.id');

    if($excepted_questions){
        $questions->whereNotIn('answer_statistics.id', $excepted_questions);
    }

    if($confidence_specs->best_match){
        $questions->whereNotNull('questions.best_match');
    }

    if($confidence_specs->votes != 0 && $confidence_specs->weight != 0){
        $questions->where('answer_statistics.votes', '<=' , $confidence_specs->votes)
        ->orWhere('answer_statistics.weight', '<=' , $confidence_specs->weight);
    }

    $questions->inRandomOrder()
        ->limit(4)
        ->get();

    dd($questions->get());  // here I get 4 arrays with null values..

1 Ответ

0 голосов
/ 27 мая 2020

Чтобы удалить нулевые значения из массива, вы можете использовать filter ()

$collection = collect([1, 2, 3, null, false, '', 0, []]);
$collection->filter()->all();
// [1, 2, 3]
...