Как добавить дополнительные кнопки загрузки изображений и сохранить значения в таблице в Laravel 5.6? - PullRequest
0 голосов
/ 21 октября 2018

Я работаю с Laravel 5.6 и базой данных mysql.в моем приложении есть таблица сохранения данных автомобиля и таблица сохранения изображений в виде загрузок.Соотношение между моделью транспортного средства и моделью загрузки выглядит следующим образом: модель транспортного средства

public function uploads()
    {
        return $this->hasMany(Upload::class);
    }

загружает модель

public function vehicle()
    {
        return $this->belongsTo(Vehicle::class);
    }

и структура загрузки таблицы выглядит следующим образом

id  filename  resized_name  original_name  vehicle_id
1   ddeerr     dfrerrerr     dfggdfgdfgdf      2
2   hyujjh     hyujkiolp     frtghyujnbff      5
3   frtghy     dfdfgdfgdf    dgddhdherere      6
4   dfgdfgd    sdsdgsdsds    sddgsgsgssgsg     6
5   xsdfgsd    hgfydiurio    jdkjfkjhkjfjdj    6

иУ меня есть ссылка для редактирования данных в таблице транспортных средств, например,

{{route('vehicles.edit',$vehicule->id.'/edit/')}}" >Edit</a>

, когда нажимаете на ссылку для редактирования какого-либо транспортного средства, URL-адрес выглядит следующим образом,

http://localhost:8000/myads/11/edit

, и в форме редактирования транспортного средства связанные изображения показаны со следующимикоды,

@foreach( $vehicles-> uploads as $upload)

                    <img id="preview"
                         src="{{asset((isset($upload) && $upload->resized_name!='')?'images/'.$upload->resized_name:'images/noimage.png')}}"
                         height="200px" width="200px"/>
                    <input class="form-control" style="display:none" name="files[]" type="file" id="files" name="_token" value="{{ csrf_token() }}" enctype="multipart/form-data">
                    <br/>

               <a href="/myads/{{$upload->id}}/editimage">Edit Image</a>|

               <a class="button is-outlined" href="/myads/{{$upload->id}}/delete" onclick="return confirm('Are you sure to want to delete this record?')" >Delete</a></td>

                  <hr>
                   @endforeach
                    @endif

Теперь моя проблема подходит, на самом деле в моем приложении пользователь может загружать только изображения, связанные с каждым транспортным средством только 4 изображения.в форме представления данных пользователь может прикрепить до 1-4 изображений.затем предположим, что один пользователь прикрепил только два изображения, когда он вставил новую запись данных транспортного средства.но после того, как он должен был приложить больше 2 изображений с его рекламой транспортного средства.затем он должен перейти к форме редактирования, и он может видеть существующий файл его прикрепления двух изображений, и должно быть две кнопки прикрепления, чтобы прикрепить два новых изображения. как это можно сделать, я думаю, что мы должны проверить таблицу загрузок с соответствующим vehicle_idи если имеется 4 изображения, то он не может прикрепить другие изображения, а если изображений меньше 4, пользователь может прикрепить изображения до 4 изображений в таблицу загрузки.

моя новая функция хранения изображений:

$ photos = $ request-> file ('files');

        if (!is_array($photos)) {
            $photos = [$photos];
        }

        if (!is_dir($this->photos_path)) {
            mkdir($this->photos_path, 0777);
        }
 for ($i = 0; $i < count($photos); $i++) {
            $photo = $photos[$i];
            $name = sha1(date('YmdHis') . str_random(30));
            $save_name = $name . '.' . $photo->getClientOriginalExtension();
            $resize_name = $name . str_random(2) . '.' . $photo->getClientOriginalExtension();
              Image::make($photo)
                ->resize(250, null, function ($constraints) {
                    $constraints->aspectRatio();
                })
                ->save($this->photos_path . '/' . $resize_name);

            $photo->move($this->photos_path, $save_name);

            $upload = Upload::find($id);
            $upload->filename = $save_name;
            $upload->resized_name = $resize_name;
            $upload->original_name = basename($photo->getClientOriginalName());
            $upload->vehicle_id = $vehicle->id;
            $upload->save();
        } 

затемв Image Controller, как я могу использовать вышеуказанную функцию для вставки новых прикрепленных изображений?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...