фотоальбом фотоальбома. ошибка при обновлении фотографий в альбоме - PullRequest
0 голосов
/ 10 октября 2019

Я пытался обновить фотографии в альбоме, но не могу сделать это правильно. я знаю, что мне нужно получить идентификатор альбома фотографий, которые я хочу обновить, но я не могу получить правильную логику для запроса.

эта ошибка появляется, когда я запрашиваю обновление

SQLSTATE[23000]: Integrity constraint violation: 1048 Column 'album_id' cannot be null (SQL: update `photos` set `album_id` = , `photo` = IMG-20190527-WA0001_1570703623.jpg, `size` = 275807, `updated_at` = 2019-10-10 10:33:44 where `id` = 197)

модель фотографий для приложения показана ниже

class Photos extends Model
{
    protected $fillable = array('album_id', 'description', 'photo', 'title', 'size');

    public function album(){
    return $this->belongsTo('App\Album');
}
}

Это то, что я пробовал для логики обновления в photosController. Я пытался запросить идентификатор альбома, но он, похоже, не работает

public function edit($id){
    $photo = Photos::find($id);
    return view('photos/edit')->with('photo', $photo);
}

public function update(Request $request, $id){
    $this->validate($request, [
        'photo' => 'required | max:15000'
    ]);


    $path = [];


            //get filename with extension
            $filenameWithExt = $request->file('photo')->getClientOriginalName();

            //get just filename
            $filename = pathinfo($filenameWithExt, PATHINFO_FILENAME);

            //get extension
            $extension = $request->file('photo')->getClientOriginalExtension();

            //create new file name
            $filenameToStore = $filename.'_'.time().'.'.$extension;

            //get file size
            $filesize = $request->file('photo')->getClientSize();

            $path = $request->file('photo')->storeAs('public/photos'.$request->input('album_id'), $filenameToStore);   

            $photo = Photos::find($id);
            $photo->album_id = $request->input('album_id');
            $photo->size = $filesize;
            $photo->photo = $filenameToStore;
            $photo->save();

    return $path;
}

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

public/photos//IMG-20190527-WA0001_1570706571.jpg

Редактирование фотографий php view code

{!!Form::open(['action' => ['PhotosController@update', $photo->id], 'method' => 'POST', 'enctype' => 'multipart/form-data'])!!}
        {{Form::file('photo')}}
        {{Form::hidden('_method','PUT')}}  
        {{Form::submit('submit')}}
    {!! Form::close() !!}

модель базы данных для таблицы фотографий

 public function up()
{
    Schema::create('photos', function (Blueprint $table) {
        $table->increments('id');
        $table->integer('album_id');
        $table->string('photo');
        $table->string('size');
        $table->timestamps();
    });
}


public function down()
{
    Schema::dropIfExists('photos');
}

помощь будет принята

1 Ответ

0 голосов
/ 10 октября 2019

Ошибка в этой строке

$photo->album_id = $request->input('album_id');

В вашей форме нет ввода с именем album_id

Вы можете создать скрытый файл и назначить егозначение

{!!Form::open(['action' => ['PhotosController@update', $photo->id], 'method' => 'POST', 'enctype' => 'multipart/form-data'])!!}
{{Form::file('photo')}}
{{Form::hidden('_method','PUT')}}
{{-- Here --}}
{{Form::hidden('album_id', $photo->album->id)}}
{{Form::submit('submit')}}
{!! Form::close() !!}

или получить его из отношения следующим образом:

$photo->album_id = $photo->album->id;

Обратите внимание, что вы также используете это пустое | пустое значение здесь

$path = $request->file('photo')
 ->storeAs('public/photos'.$request->input('album_id'), $filenameToStore);   

Обязательно обновите это тоже

Надеюсь, это поможет

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