Как сбросить передаваемую по ссылочной переменной в чан Laravel? - PullRequest
0 голосов
/ 17 мая 2019

Я работаю над переносом данных старой БД на новую вкладку в laravel и использую чанк для преодоления утечки памяти. но когда я передаю внешнюю переменную в chuck Closure с помощью использования ($ var) ее обновления, и я отображаю ее после фрагмента complete.but, когда я сбрасываю эту переменную или обнуляю ту переменную, которую она не может обновить. Это отображение предыдущего значения.

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

unset($output);
$output = null;
$output = array();

Выше кода не сбрасывается вывод $

$output = array(
        "exceptional_queries" => array(),
        "total_row" => 0,
        "inserted_row" => 0
    );

// Table 1

$f_package = $con->table('old_table')->orderBy('id');

$f_package->chunk(50, function ($package) use (&$output) {

        $total_data = count($package);
        $output['total_row'] += $total_data;
        foreach ($package as $data) {
            try {
                $insert = [
                    ......
                ];
                //Insert Data
                $result  = DB::table('new_table')->insert($insert);
                if ($result) {
                    $output['inserted_row']++;
                }
            } catch (\Exception $exception) {
                // Catch query exception & store it in array
                if ($exception instanceof Illuminate\Database\QueryException) {
                    $output['exceptional_queries'][] = $exception->getMessage();
                }
            }
        }
    });

   echo "-> $table: ".$output['inserted_row']." row inserted out of ".$output['total_row']." \n";
    if (count($output['exceptional_queries'])) {
        echo "- ".count($output['exceptional_queries'])." row has QueryException! \n";
    }

    unset($output);
    $output = null;
    $output = array(
        "exceptional_queries" => array(),
        "total_row" => 0,
        "inserted_row" => 0
    );

//Table 2

 Repeat above things............

В Таблице-2 указано исключение для Таблицы-1 и Таблицы-2. По сути, $ output не сбрасывается и не сбрасывается. так и происходит.

Как я могу сбросить его?

Спасибо.

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