Раньше я использовал Laravel 5.6, мои фотографии загружались отлично, а теперь, когда я обновился до 5.7, теперь они не работают, и я в растерянности. Будут загружены сообщения, а не фотографии. Я все перепроверил, перепроверил взаимосвязи и маршруты, но безрезультатно. Любая помощь будет оценена по достоинству.
home.blade.php:
<form method = "POST" action = "{{ route('makePost') }}">
@csrf
<div class = "form-group row">
<label for = "body" class = "col-md-4 col-form-label text-md-right">{{ __('Body') }}</label>
<div class = "col-lg-6">
<textarea id = "body" type = "text" class = "form-control{{ $errors->has('body') ? ' is-invalid' : '' }}" name = "body" value = "{{ old('body') }}" required autofocus></textarea>
@if ($errors->has('body'))
<span class = "invalid-feedback" role = "alert">
<strong>{{ $errors->first('body') }}</strong>
</span>
@endif
</div>
</div>
<div class = "col-md-6">
<input id = "image" type = "file" class = "form-control{{ $errors->has('image') ? ' is-invalid' : '' }}" name = "image" value = "{{ old('image') }}" autofocus>
@if ($errors->has('image'))
<span class = "invalid-feedback" role = "alert">
<strong>{{ $errors->first('image') }}</strong>
</span>
@endif
</div>
<div class = "form-group row mb-0">
<div class = "col-md-6 offset-md-4">
<button type = "submit" class = "btn btn-primary">
{{ __('Create Post') }}
</button>
</div>
</div>
</form>
PostsController.php:
public function store(Request $request)
{
$input = $request->all();
$user = Auth::user();
if ($file = $request->file('photo_id')) {
$name = time() . $file->getClientOriginalName();
$file->move('images', $name);
$photo = Photo::create(['file'=>$name]);
$input['photo_id'] = $photo->id;
}
$user->post()->create($input);
return redirect('/home');
}
Photo.php:
<?php
namespace App;
use Illuminate\Database\Eloquent\Model;
class Photo extends Model
{
protected $fillable = [
'file',
];
public function user() {
return $this->belongsTo('App\User');
}
public function photo() {
return $this->belongsTo('App\Photo');
}
}
Post.php:
<?php
namespace App;
use Illuminate\Database\Eloquent\Model;
class Post extends Model
{
protected $fillable = [
'body', 'photo_id', 'user_id',
];
public function post()
{
return $this->belongsTo('App\User');
}
}






Добавьте enctype = "multipart/form-data" в тег <form>. Это значение требуется, если вы используете формы, в которых есть элемент управления загрузкой файлов.
<form method = "POST" action = "{{ route('makePost') }}" enctype = "multipart/form-data">
//
</form>
Источник: Атрибут enctype HTML
Я добавил enctype, не могу поверить, что забыл об этом, но теперь я получаю сообщение об ошибке: Общая ошибка: 1364 Поле photo_id не имеет значения по умолчанию (SQL: вставить в значения
posts(body,user_id,updated_at,created_at) (asdfasdf, 1, 2018-09-23 18:14:05, 2018-09-23 18:14:05))