Я пытаюсь загрузить несколько CSV-файлов одновременно, используя laravel Excel, но по неизвестной причине импортируются дубликаты, стоит отметить, что каждый раз, когда я делаю усечение в bd.
Я использую postgressql, laravel 5.8 и laravel excel 3.1
Контроллер
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use App\Traits\storeTrait;
class ImportController extends Controller
{
use storeTrait {
storeUsoSuelo as storeUsoSuelo;
storeFundo as storeFundo;
storeFundoGrilla as storeFundoGrilla;
storeCuadrante as storeCuadrante;
}
public function store(Request $request)
{
$usoSuelo = 'uso_suelo.csv';
$this->storeUsoSuelo($usoSuelo);
$cuadrante = 'cuadrantes.csv';
$this->storeCuadrante($cuadrante);
$fundo = 'mv_qav_fundos.csv';
$this->storeFundo($fundo);
$fundoGrilla = 'fundos_grilla.csv';
$this->storeFundoGrilla($fundoGrilla);
}
}
storeTrait. php
<?php
namespace App\Traits;
use Illuminate\Http\Request;
use App\Imports\UsoSueloImport;
use App\Imports\CuadrantesImport;
use App\Imports\FundosImport;
use App\Imports\FundosGrillasImport;
use Maatwebsite\Excel\Facades\Excel;
trait storeTrait{
public function storeUsoSuelo($archivo) {
Excel::import(new UsoSueloImport,$archivo);
}
public function storeFundo($archivo) {
Excel::import(new FundosImport,$archivo);
}
public function storeFundoGrilla($archivo) {
Excel::import(new FundosGrillasImport,$archivo);
}
public function storeCuadrante($archivo) {
Excel::import(new CuadrantesImport,$archivo);
}
}
UsoSueloImport. php
<?php
namespace App\Imports;
use App\UsoSuelo;
use Maatwebsite\Excel\Concerns\ToModel;
use Maatwebsite\Excel\Concerns\WithHeadingRow;
class UsoSueloImport implements ToModel, WithHeadingRow
{
/**
* @param array $row
*
* @return \Illuminate\Database\Eloquent\Model|null
*/
public function model(array $row)
{
return new UsoSuelo([
'cod_pais' => $row['cod_pais'],
'cod_fundo' => $row['cod_fundo'],
'nom_fundo' => $row['nom_fundo'],
'cod_uso_suelo' => $row['cod_uso_suelo'],
'dsc_uso_suelo' => $row['dsc_uso_suelo'],
'cod_rodal' => $row['cod_rodal'],
'cod_especie' => $row['cod_especie'],
'dsc_especie' => $row['dsc_especie'],
'ano_plantacion' => $row['ano_plantacion'],
'cod_esquema' => $row['cod_esquema'],
'dsc_esquema' => $row['dsc_esquema'],
'dsc_restriccion_suelo' => $row['dsc_restriccion_suelo'],
'sup_ha' => $row['sup_ha'],
'cod_z_cpino' => $row['cod_z_cpino'],
'cod_z_prod' => $row['cod_z_prod'],
'cod_sz_prod' => $row['cod_sz_prod'],
'dsc_sz_prod' => $row['dsc_sz_prod'],
'id_area_us' => $row['id_area_us'],
'region' => $row['region'],
'comuna' => $row['comuna'],
]);
}
}
Остальные операции импорта аналогичны.
Например, мой файл «uso_suelo» имеет 27 строк, но в bd 54 строки загружены, с остальными то же самое, я пытаюсь импортировать только один файл, и происходит то же самое.
Я инициализирую его кнопкой
<a href="{{ url('/tablas') }}" class="btn btn-success">Generar Tablas</a>
Маршруты
Route::get('tablas', 'ImportController@store');