Je suis nouveau sur Laravel, Je souhaite insérer les détails de l'étudiant du fichier xlsx dans la base de données MySQL. J'utilise Laravel Excel v3 pour importer des fichiers Excel. Ça fonctionne bien. Cependant, outre l'insertion des détails de l'étudiant dans une table, le même dossier d'identification d'étudiant doit être créé dans toutes les tables associées.
Exemple--> Si vous insérez 1 étudiant dans la table "student_details", vous devez créer 1 enregistrement dans les tables "oral" et "endsem" avec la clé étrangère "student_id".
J'ai organisé des activités pour les enregistrer dans la fiche verbale et la fiche finale. La question est maintenant de savoir comment appliquer l'événement et comment obtenir la carte d'étudiant après avoir créé l'étudiant pour déclencher l'événement. (L'identifiant de l'étudiant sera la valeur auto_increment)
StudentImport --->
<?php namespace App\Imports; use App\Events\StudentCreated; use Illuminate\Support\Collection; use Maatwebsite\Excel\Concerns\ToModel; use Maatwebsite\Excel\Validators\Failure; use Maatwebsite\Excel\Concerns\Importable; use Maatwebsite\Excel\Concerns\SkipsOnFailure; use Maatwebsite\Excel\Concerns\WithValidation; use Maatwebsite\Excel\Concerns\SkipsFailures; use Maatwebsite\Excel\Concerns\WithHeadingRow; use App\Models\StudentDetails; class StudentsImport implements ToModel, SkipsOnFailure, WithValidation, WithHeadingRow { use Importable, SkipsFailures; /** * @param Collection $collection */ public function model(array $row) { return new StudentDetails([ 'roll_no' => $row['roll_no'], 'student_id' => $row['student_id'], 'div' => $row['div'], 'name' => $row['name'], 'gender' => $row['gender'], 'user_key' => session()->get('user_id'), 'group_key' => $group_key ]); } public function onFailure(Failure ...$failures) { // Handle the failures how you'd like. } public function rules(): array { return [ 'student_id' =>[ 'required', 'string', 'unique:student_details' ], 'roll_no' =>[ 'required', 'integer' ], 'name' => [ 'required', 'string', ] ]; } }
Mon objectif principal est d'insérer le dossier de l'étudiant dans toutes les tables associées avec la clé étrangère "student_id" lorsque l'étudiant est inséré dans la table "student_details". S'il existe un autre moyen, aidez-moi.
Au lieu d'utiliser
MaatwebsiteExcelConcernsToModel
您可以使用MaatwebsiteExcelConcernsOnEachRow
. Vous avez plus de contrôle sur ce qui se passe sur chaque ligne.Quant à la concrétisation des affaires :