Отображение большого массива в laravel blade за слишком много времени

#laravel #time #view #laravel-blade #execution-time

Вопрос:

итак , я импортировал свой большой файл excel с огромной информацией за 1 секунду , и я получил всю информацию , которую мне нужно отобразить в течение 1 секунды, но у меня возникла большая проблема при отображении массива в представлении, потому что я проверяю, правильны ли ячейки или нет, я использую 5 ifs и 3 для каждого, и это занимает более 2 минут, мне нужна помощь, чтобы отобразить всю информацию за короткое время, это мой массив, и спасибо введите описание изображения здесь

введите описание изображения здесь

и есть мой код представления, который занимает много времени для отображения информации введите описание изображения здесь

и спасибо

 //here we get our final result of true and false fields
    $finale_array = [];
   
    // here we get all our 
    $current_table2 = [];
    $results_applied = [];
    $current_result = [];
    $columns = SCHEMA::getColumnListing('imports');

    // here we get all our conditions
    $conditions = DB::table('conditions')->select('number', 'field', 'value')->get();

    // here we get all our data
    $imports = DB::table('imports')->get();

    $results = DB::table('results')->get();
    $x = 0;
    $default_value = 0;
    foreach ($imports as $key => $imported) {


        $res = get_object_vars($imported);

        foreach ($conditions as $value) {

            $array = get_object_vars($value);
            $result =  $this->test($columns, $array['field']); // the result of our test function

            if ($result == "ok") {

                if ($res[$array['field']] == $array['value']) {


                    foreach ($results as $value_result) {

                        $res_resultat = get_object_vars($value_result);

                        $test_field = $this->test($columns, $res_resultat['field']);
                        // testing if the condtion numder match with the result number 
                        if (($res_resultat['condition_number'] == $array['number'])) {

                            if (($test_field == 'ok')) {



                                if ($res['id'] != $default_value) {
                                    // here test if the difference between the id and the default value is different from the current id to insert 
                                    if (($res['id'] - $default_value) != $res['id']) {

                                        array_push($current_table2, $results_applied);
                                        array_push($finale_array, $current_table2);

                                        $current_table2 = [];
                                        $results_applied = [];
                                        $default_value = $res['id'];
                                    }
                                    $current_table2 = [$res, $res['id']];
                                }

                                $current_result = [$res_resultat['field'], $res[$res_resultat['field']]];

                                if ($res_resultat['value'] == $res[$res_resultat['field']]) {

                                    $current_result[2] = 'true';
                                    $current_result[3] = $res_resultat['value'];
                                } else {
                                    $current_result[2] = 'false';
                                    $current_result[3] = $res_resultat['value'];
                                }
                                $current_result[4] = $array['number'];
                                array_push($results_applied, $current_result);
                            }
                        }
                    }
                }
            }
        }
        $default_value = $res['id'];
    }


    array_push($current_table2, $results_applied);
    array_push($finale_array, $current_table2);

     dd($finale_array);


    return view('Appliedconditions', ['imports' => $finale_array, 'columns' => $columns]);
}
 

Комментарии:

1. Пожалуйста, не публикуйте изображения кода. разместите код в блоке кода в своем вопросе, чтобы мы могли его скопировать.

Ответ №1:

Из того, что я вижу, вы восстанавливаете все данные без подкачки. Вы должны разбить данные на страницы, используя paginate(#elements_per_page) директиву в своем запросе, где #elements_per_page указано количество элементов, которые вы хотите отобразить на странице.

Например:

 $elements = Elements::select('*')->paginate(10);
 

и в представлении блейда вы можете восстановить ссылки на страницы после закрывающего тега таблицы таким образом: {{ $elements->links() }}

Комментарии:

1. здесь я получаю всю строку импорта без разбиения на страницы, потому что я их фильтрую, я тестирую некоторые кодировки и я предоставляю информацию не из какого-либо запроса, я собираю информацию из запроса после их тестирования, а затем помещаю их в массив, который я буду отображать в представлении, я могу разбить массив результатов на страницы ?

2. @KhaledAbdelmoumen можете ли вы отредактировать свой вопрос с помощью своего кода? Я не понимаю, что вы имеете в виду, и я не могу вам помочь