使用laravel更新多表数据或使用csv创建

时间:2020-05-13 17:15:42

标签: laravel maatwebsite-excel

我正在尝试使用Maatwebsite / Laravel-Excel创建或更新表。我将数据保存在不同的表中没问题。我想通过检查csv文件中的id来更新表地址数据(如果数据库中已经存在),我不知道该怎么做。

有人可以帮助我达到预期的效果!谢谢

这是要导入的类:

class AdresseImport implements ToModel
{
    /**
    * @param array $row
    *
    * @return \Illuminate\Database\Eloquent\Model|null
    */
    public function model(array $row)
    {
        $adresse =null;

        if($row[0] != 'id' and !is_null($row[0])){

            $id_logette = (isset($row[24])) ? intval($row[24]) : null;

            $commune = Commune::where('nom_commune',$row[8])->first();
            if(!$commune){
                $commune = new Commune();
                $commune->nom_commune =$row[8];
                $commune->code_postal = $row[6];
                $commune->code_insee =$row[7];
                $commune->save();

            }else{
                if(isset($id_logette)){
                    $logette = Logette::find($id_logette);
                    $logette->id_commune = $commune->id_commune;
                    $logette->save();
                }
            }

            $secteur = Secteur::where('nom_secteur',$row[5])->where('id_commune',$commune->id_commune)->first();
            if(!$secteur){
                $secteur = new Secteur();
                $secteur->nom_secteur = $row[5];
                $secteur->id_commune = $commune->id_commune;
                $secteur->save();
            }

            $voie = Voie::where('nom_voie',$row[4])->where('id_commune',$commune->id_commune)->first();
            if(!$voie){
                $voie = new Voie([
                    'nom_voie' => $row[4],
                    'id_fantoir' => $row[1],
                    'nom_afnor' => $row[18],
                    'etroite' => $row[5],
                    'id_commune' => $commune->id_commune,
                    'id_etat_lieu' => (isset($row[22])) ? 1 : null
                ]);
                $voie->save();
            } else {
                if(!isset($voie->id_etat_lieu)){
                    $voie->id_etat_lieu = (isset($row[22])) ? 1 : null;
                    $voie->save();
                }
            }


            $adresse = new Adresse([
                'id_sig' => $row[0],
                'id_secteur' => $secteur->id_secteur,
                'id_voie' => $voie->id_voie,
                'numero' => $row[2],
                'id_logette' => $id_logette,
                'rep' => $row[3],
                'lon' => str_replace(',', '.',$row[13]),
                'lat' => str_replace(',', '.',$row[14]),
            ]);
            $adresse->save();
        }


        return $adresse;
    }
}

我在控制器Excel::import(new AdresseImport, $request->file('excel_adresse'));

中插入了AdresseImpot类

例如,我的csv文件的内容。

id  id_fantoir  numero  rep nom_voie    secteur code_postal code_insee  nom_commune code_insee_ancienne_commune nom_ancienne_commune    x   y   lon lat alias   nom_ld  libelle_acheminement    nom_afnor   source_position source_nom_voie commentaires    Pas d'accŠs Lieu de pr‚sentation    Logette Terrain … Faire
92019_2k7yhg_00001      1       Rue Maximilien de Robespierre   Secteur B   92290   92019   Chƒtenay-Malabry            645191,91   6852648,34  2,254234    48,771604           CHATENAY-MALABRY    RUE MAXIMILIEN DE ROBESPIERRE   inconnue    inconnue                    
92019_2k7yhg_00002      2       Rue Maximilien de France    Secteur B   92290   92019   Chƒtenay-Malabry            645183,83   6852656,09  2,254123    48,771673           CHATENAY-MALABRY    RUE MAXIMILIEN DE ROBESPIERRE   inconnue    inconnue                    
92019_2k7yhg_00003      3       Rue Maximilien de Maroc Secteur B   92290   92019   Chƒtenay-Malabry            645205,13   6852631,76  2,254416    48,771456           CHATENAY-MALABRY    RUE MAXIMILIEN DE ROBESPIERRE   inconnue    inconnue                    
92019_2k7yhg_00004      4       Rue Maximilien de Devcorp   Secteur A   92290   92019   Chƒtenay-Malabry            645186,37   6852637,16  2,25416 48,771503           CHATENAY-MALABRY    RUE MAXIMILIEN DE ROBESPIERRE   inconnue    inconnue                    
                                                                                        x   91-93 division leclerc

0 个答案:

没有答案
相关问题