Вызов функции-члена store () с нулевым значением laravel 7 - PullRequest
0 голосов
/ 16 марта 2020

Когда я пытаюсь редактировать сообщение пользователя без изображения, я получаю эту ошибку "Вызов функции-члена store () в null", но когда я пытаюсь редактировать сообщение пользователя с изображением, я не получаю ошибки.

Вот мой html код

<div class="col-lg-4 col-md-4 col-sm-4">
    <div class="ur-thumb">
        <label for="picture">
            <input id="picture" type="file" name="cv_picture" style="display: none" onchange="readUrl(this)">
            <img id="myImage" src="{{Storage::url($usersCv->picture)}}" class="img-responsive pointer" alt="" />
        </label>

    </div>
    @error('cv_picture')
    <strong style="color: red">{{$message}}</strong>
    @enderror
</div>

Вот мой контроллер

  public function updateUserCv(CvRequest $request, $id)
{
    $userId = Auth::id();
    Cv::where('id', $id)
        ->where('user_id', $userId)
        ->update([
            'name' => $request['name'],
            'surname' => $request['surname'],
            'father_name' => $request['fatherName'],
            'gender' => $request['gender'],
            'year' => $request['year'],
            'category_id' => $request['catId'],
            'position_name' => $request['position'],
            'type_id' => $request['typId'],
            'education' => $request['education'],
            'education_description' => $request['about_education'],
            'experience_id' => $request['expId'],
            'experience_descriptions' => $request['about_work'],
            'city_id' => $request['cityId'],
            'salary' => $request['salary'],
            'skills' => $request['skills'],
            'other_information' => $request['other'],
            'mobile' => $request['mobile'],
            'email' => $request['email'],
            'picture' => ($request->file('cv_picture')->store('public/profile')),

        ]);
    toastr()->success('Success.', 'ok!');
    return redirect('user-cv/'.$id);

}

1 Ответ

0 голосов
/ 16 марта 2020

У вас есть выражение $request->file('cv_picture'), которое возвращает null, а затем вы пытаетесь вызвать для него метод store.

Чтобы исправить это, добавьте проверку возвращаемого значения - что-то вроде

'picture' => $request->file('cv_picture') ? $request->file('cv_picture')->store('public/profile') : null

Обновление : хорошо, я пропустил, что изображение не может быть повторно загружено при редактировании записи. Поэтому вам нужно отдельно подготовить данные для метода update () и установить свойство изображения, только если оно существует. Как то так:

public function updateUserCv(CvRequest $request, $id)
{
    $update_data = [
        'name' => $request['name'],
        'surname' => $request['surname'],
        'father_name' => $request['fatherName'],
        'gender' => $request['gender'],
        'year' => $request['year'],
        'category_id' => $request['catId'],
        'position_name' => $request['position'],
        'type_id' => $request['typId'],
        'education' => $request['education'],
        'education_description' => $request['about_education'],
        'experience_id' => $request['expId'],
        'experience_descriptions' => $request['about_work'],
        'city_id' => $request['cityId'],
        'salary' => $request['salary'],
        'skills' => $request['skills'],
        'other_information' => $request['other'],
        'mobile' => $request['mobile'],
        'email' => $request['email'],
    ];
    $file = $request->file('cv_picture');
    if ($file) {
        $update_data['picture'] = $file->store('public/profile');
    }
    $userId = Auth::id();
    Cv::where('id', $id)
        ->where('user_id', $userId)
        ->update($update_data);
    toastr()->success('Success.', 'ok!');
    return redirect('user-cv/'.$id);

}
...