Laravel не удается скопировать содержимое одной базы данных в другую

#php #laravel

#php #laravel

Вопрос:

Я не уверен, как это сделать. У меня есть рабочая таблица, в которой я обрабатываю данные, чтобы они соответствовали остальной части нашей базы данных, и опубликованная таблица, в которую я хочу перенести окончательные данные. Хотя truncate() выполняется и очищается Report таблица, Prescription таблица остается пустой после этого запуска. Это какая-то красноречивая проблема, которую я не понимаю?

Вот мой код:

 // call working table
$reports = Report::orderBy('id', 'asc');

// loop through every working report and save as a new prescription
foreach ($reports as $report) {
    $prescription = new Prescription();
    $prescription->script_id = $report->script_id;
    $prescription->medication = $report->medication;
    $prescription->fill_date = $report->fill_date;
    $prescription->type = $report->type;
    $prescription->quantity = $report->quantity;
    $prescription->supply = $report->supply;
    $prescription->insurance = $report->insurance;
    $prescription->rx_number = $report->rx_number;
    $prescription->copay = $report->copay;
    $prescription->tr = $report->tr;
    $prescription->cogs = $report->cogs;
    $prescription->fees = $report->fees;
    $prescription->ncr = $report->ncr;
    $prescription->save();
}

// truncate working table
$reports->truncate();

// return
$message = 'All records transferred to prescriptions table.';
return redirect('reports')->with('success', $message);
  

Ответ №1:

Вам не хватает ->get() в вашем запросе отчета, чтобы фактически получить результаты. Как есть, $reports содержит только объект query builder.

 $reports = Report::orderBy('id', 'asc')->get();
  

Скорее всего, впоследствии вам потребуется настроить вызов truncate:

 Report::truncate();