Je pense que différents attributs tels que pic_1, pic_2, pic_3
pour votre table unique cars
vous posent problème pour gérer les fichiers. Ma suggestion est de le faire en utilisant une relation
. Ainsi, vous stockez des informations sur les voitures dans votre table cars
. Et chaque voiture peut avoir plusieurs images à afficher en tant que preuve de la voiture. Dans cette situation, il serait préférable de créer une autre table telle que car_evidence
avec deux colonnes dans cette table nommées cars_id
et car_images
. Ensuite, créez une relation entre eux. Si vous faites cela, vous pourrez soumettre autant d'images de voitures que vous le souhaitez de manière dynamique. Les attributs pic_1, pic_2, pic_3 ne sont pas la meilleure solution. Veuillez consulter mon processus - Votre modèle Cars.php -
class Cars extends Model
{
protected $primaryKey = 'cars_id';
protected $fillable = [
//les autres champs de votre table cars
];
public function carevidence()
{
return $this->hasMany('App\CarEvidence', 'cars_id', 'id');
}
}
Créez un nouveau modèle CarEvidence
avec une migration en exécutant php artisan make:model CarEvidence -m
. Ensuite, à l'intérieur de ce fichier de migration, ajoutez simplement deux colonnes
comme ceci -
$table->bigInteger('cars_id')->unsigned()->nullable();
$table->string('car_images');
Votre modèle CarEvidence.php devrait ressembler à -
class CarEvidence extends Model
{
protected $fillable = [
'cars_id', 'car_images',
];
public function car(){
return $this->belongsTo('App\Cars', 'cars_id', 'id');
}
}
Le formulaire est -
@csrf
// vos autres champs d'entrée concernant les informations sur la voiture ici, je pense s'il y en a
Enregistrer
Web.php
Route::post('/votre-action-de-formulaire-url-ici', 'VotreControllerIci@VotreMéthodeIci');
Et ensuite dans votre méthode du contrôleur -
public function VotreMéthodeIci(Request $request){
$this->validate($request, [
'carEvidence.*' => 'required|mimes:jpeg,png,jpg,gif,svg|max:2048',
]);
$post = new Cars;
//$post->carEvidence = "yes"; ici, d'autres informations sur la voiture à enregistrer dans la table `cars`
if ($post->save()) {
if($request->hasFile('carEvidence')){
$files = $request->file('carEvidence');
foreach($files as $file){
$extension = $file->getClientOriginalExtension();
$filename =time().'.'.$extension;
$file->move(public_path('/image'), $filename);
CarEvidence::create([
'cars_id' => $post->id,
'car_images' => $filename
]);
}
}
}
return redirect('/auditinterne')->with('success', "A été envoyé pour être validé");
}
Et, enfin lors du retour de votre fichier blade
public function nomdeméthode()
{
$cars = Cars::with('carevidence')->get();
return view('votre-fichier-blade-vue', compact('cars'));
}
Ensuite, dans votre-fichier-blade-vue
pour obtenir les images de voiture (preuves), vous pouvez utiliser une boucle foreach
imbriquée -
@if (session('success'))
{{ session('success') }}
@endif
@if ($errors->any())
@foreach ($errors->all() as $error)
{{ $error }}
@endforeach
@endif
@foreach($cars as $car)
{{ $car->vos-champs-de-la-table-cars }}
//et obtenir toutes les images pertinentes pour la voiture comme ceci
@foreach($car->carevidence as $evidence)
@endforeach
@endforeach
J'espère que cela vous aidera !