Я думаю, different attribute such as pic_1,pic_2,pic_3
для вашей cars
единственной таблицы затруднит работу с файламиЯ предлагаю сделать это, используя relationship
.Если это так, вы храните некоторую информацию об автомобилях в своей таблице cars
.И каждая машина может иметь несколько изображений для показа в качестве доказательства автомобиля.В этой ситуации было бы лучше, если бы вы создали другую таблицу, например car_evidence
, чтобы в этой таблице было два столбца с именами cars_id
и car_images
.Затем установите отношения между ними.Если вам это нравится, то вы можете динамически отправлять больше изображений автомобилей. pic_1, pic_2, pic_3 атрибуты не лучше.Пожалуйста, посмотрите на мой процесс - Ваша Cars.php модель -
class Cars extends Model
{
protected $primaryKey = 'cars_id';
protected $fillable = [
//your cars table's other fields
];
public function carevidence()
{
return $this->hasMany('App\CarEvidence', 'cars_id', 'id');
}
}
Создайте новую модель CarEvidence
с миграцией, запустив php artisan make:model CarEvidence -m
.Затем, внутри этого файла миграции, просто добавьте две columns
, как это -
$table->bigInteger('cars_id')->unsigned()->nullable();
$table->string('car_images');
Ваша CarEvidence.php модель должна выглядеть так:
class CarEvidence extends Model
{
protected $fillable = [
'cars_id', 'car_images',
];
public function car(){
return $this->belongsTo('App\Cars', 'cars_id', 'id');
}
}
Формаэто -
<form action="your-route-or-url-here" method="post" enctype="multipart/form-data">
@csrf
//your other input fields about car information here, I think if any
<input type="file" name="carEvidence[]" multiple>
<button type="submit">Save</button>
</form>
Web.php
Route::post('/your-form-action-url-here', 'YourControllerHere@YourMethodHere');
И затем в вашем методе контроллера -
public function YourMethodHere(Request $request){
$this->validate($request, [
'carEvidence.*' => 'required|mimes:jpeg,png,jpg,gif,svg|max:2048',
]);
$post = new Cars;
//$post->carEvidence = "yes";here other information about car to save in `cars` table
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('/internalaudit')->with('success', "Has been sent for Validation");
}
И, наконец, во время возвратаВаш файл лезвия
public function yourmethodname()
{
$cars = Cars::with('carevidence')->get();
return view('your-view-blade-file', compact('cars'));
}
Затем внутри your-view-blade-file
, чтобы получить изображения автомобилей (доказательства), вы можете использовать вложенную петлю foreach
-
@if (session('success'))
<div class="alert alert-success">{{ session('success') }}</div>
@endif
@if ($errors->any())
<div class="alert alert-danger">
<ul>
@foreach ($errors->all() as $error)
<li>{{ $error }}</li>
@endforeach
</ul>
</div>
@endif
@foreach($cars as $car)
<p>{{ $car->your-fields-from-cars-table }}</p>
//and get all relevant images for car by this
@foreach($car->carevidence as $evidence)
<img src="{{ asset('image/'.$evidence->car_images) }}" height="60px" width="60px" />
@endforeach
@endforeach
Надеюсь, это поможет вам!