【发布时间】:2021-10-08 09:57:27
【问题描述】:
这是我第一次尝试使用 Laravel 8 处理 Maatwebsite/Laravel-Excel 包。
我正在尝试将数据从 excel 文件导入数据库表。
我的桌子:
但我有一些困难或问题:
-
在我的数据库表中,我有一个外键,这意味着当我要导入数据时,我应该存储外键而不是值,例如:我的数据表中有
id_type_facturation列,所以我应该存储 id 和而不是像“Conrat”这样的值。 -
我有另一个约束,从我的 excel 文件,列
date_of_birth,我应该计算年龄,如果年龄小于 18,我应该在另一个表上存储父母的信息,如果年龄更大大于 18 它不应该将信息存储在表 parents 中。 -
我还有一个图像列,我应该将它插入到数据库表中。
我完成了所有过程,但我使用以下代码从表单中获取数据:
public function store(Request $request)
{
$representants = new Representant();
$castings = new Casting();
$id_filiale= Auth::user()->id_filiale;
$datee = $request['date_naissance'];
$time = strtotime($datee);
$date = date('Y-m-d',$time);
$age = Carbon::parse($date)->diff(Carbon::now())->y;
$rules = array(
'nom' => 'required',
'prenom' => 'required',
'cine' => 'required|unique:castings',
'date_naissance' => 'required',
'lieu_naissance' => 'required',
'id_type_facturation' => 'required',
'artiste' => 'required',
'fonction' => 'required',
'id_type_casting' => 'required',
'tel1' => 'required',
'tel2' => 'required',
'email' => 'required',
'qualification' => 'required',
'adresse' => 'required',
'ville' => 'required',
'pays' => 'required'
);
$rules_message = array(
'nom.required' => 'Le nom est requis',
'prenom.required' => 'Le prénom est requis',
'cine.required' => 'Le CINE est requis',
'cine.unique' => 'Le CINE a déjà été pris',
'date_naissance.required' => 'La date de naissance est requise',
'lieu_naissance.required' => 'Le lieu de naissance est requis',
'id_type_facturation.required' => 'Le type de facturation est requis',
'artiste.required' => 'Est ce que c\'est un artiste ? ',
'fonction.required' => 'La fonction est requise',
'id_type_casting.required' => 'Le type de facturation est requis',
'tel1.required' => 'Le numéro de téléphone 1 est requis',
'tel2.required' => 'Le numéro de téléphone 2 est requis',
'email.required' => 'L\'adresse email est requise',
'qualification.required' => 'La qualification est requise',
'adresse.required' => 'L\'adresse est requise',
'ville.required' => 'La ville est requise',
'pays.required' => 'La pays est requis',
);
$error = Validator::make($request->all(), $rules,$rules_message);
if($error->fails())
{
return response()->json(['errors' => $error->errors()->all()]);
}
if ($age < 18) {
$image = $request->file('photo');
$new_name = rand() . '.' . $image->getClientOriginalExtension();
$image->move(public_path('castingimages'), $new_name);
$representants->nom_prenom = $request['nom_prenom'];
$representants->cine = $request['cine_representant'];
$representants->lien_casting = $request['lien_casting'];
$representants->save();
$castings->nom = $request['nom'];
$castings->prenom = $request['prenom'];
$castings->cine = $request['cine'];
$castings->date_naissance = $date ;
$castings->lieu_naissance = $request['lieu_naissance'];
$castings->mineur = 1;
$castings->id_representant = $representants->id;
$castings->id_type_facturation = $request['id_type_facturation'];
$castings->artiste = $request['artiste'];
$castings->fonction = $request['fonction'];
$castings->id_type_casting = $request['id_type_casting'];
$castings->tel1 = $request['tel1'];
$castings->tel2 = $request['tel2'];
$castings->email = $request['email'];
$castings->photo = $new_name;
$castings->qualification = $request['qualification'];
$castings->adresse = $request['adresse'];
$castings->ville = $request['ville'];
$castings->pays = $request['pays'];
$castings->id_filiale = $id_filiale;
$castings->save();
return response()->json(['success' => 'Casting/Influenceur ajouté avec succès.']);
}else
{
$image = $request->file('photo');
$new_name = rand() . '.' . $image->getClientOriginalExtension();
$image->move(public_path('castingimages'), $new_name);
$castings->nom = $request['nom'];
$castings->prenom = $request['prenom'];
$castings->cine = $request['cine'];
$castings->date_naissance = $date ;
$castings->lieu_naissance = $request['lieu_naissance'];
$castings->mineur = 0;
$castings->id_type_facturation = $request['id_type_facturation'];
$castings->artiste = $request['artiste'];
$castings->fonction = $request['fonction'];
$castings->id_type_casting = $request['id_type_casting'];
$castings->tel1 = $request['tel1'];
$castings->tel2 = $request['tel2'];
$castings->email = $request['email'];
$castings->photo = $new_name;
$castings->qualification = $request['qualification'];
$castings->adresse = $request['adresse'];
$castings->ville = $request['ville'];
$castings->pays = $request['pays'];
$castings->id_filiale = $id_filiale;
$castings->save();
return response()->json(['success' => 'Casting/Influenceur ajouté avec succès.']);
}
}
除了从 excel 文件中获取数据之外,我还能如何做同样的事情? 如果您对此有任何想法,或者如果您知道我是否可以使用此软件包做这些事情,请告诉我。
【问题讨论】:
-
要回答您的第一个问题,有多种可能的解决方案,具体取决于最适合您的方案:a) Excel 列值是唯一的,可以使用索引数据库列进行查询 b) 让 Excel 存储隐藏中的 ID(使用 VLOOKUP 或类似的东西)
-
@shaedrich,谢谢你的评论,如果你能解释更多我该怎么做
标签: php excel laravel laravel-8 laravel-excel