Laravel, Нарушение ограничения целостности

Я потратил два часа, пытаясь исправить это, но безуспешно!

Я пытаюсь сохранить сообщение, подпись и его изображение, а также uder_id,

Вот файл миграции:

public function up()
{
    Schema::create('posts', function (Blueprint $table) {
        $table->bigIncrements('id');
        $table->string('user_id');
        $table->unsignedBigInteger('caption');
        $table->string('image');
        $table->timestamps();
    });
}
public function store()
{
    $data= \request()->validate ([

        'caption'=>'required',
        'image'=>'',
    ]);

    auth()->user()->posts()->create($data);

    dd(\request()->all());
}

Вот модель

class posts extends Model
{
    protected $guarded = array(
        // Any columns you don't want to be mass-assignable.
        // Or just empty array if all is mass-assignable.
    );
    public function user()
    {
        return $this->belongsTo(User::class);
    }
}

Вот вид

<div class="form-group row">

    <label for="caption" class="col-md-4 col-form-label">post Caption</label>
    <input id="caption"
           type="text"
           class="form-control @error('caption') is-invalid @enderror"
           name="caption"
           value="{{ old('caption') }}"
           autocomplete="caption" autofocus>

    @error('caption')
        <span class="invalid-feedback" role="alert">
            <strong>{{ $message }}</strong>
        </span>
    @enderror
    <div>
        <label for="image" class="col-md-4 col-form-label">post_image</label>
        <input type="file" , class="form-control-file" , id="image" ,name="image">

        <div class=" row pt-5">
            <button class="btn btn-primary "> Add new post</button>
        </div>

        @error('image')
            <strong>{{ $message }}</strong>
        @enderror
    </div>
</div>

и вот ошибка

Illuminate \ Database \ QueryException SQLSTATE [23000]: нарушение ограничения целостности: 19 Ошибка ограничения NOT NULL: posts.image (SQL: вставить в «сообщения» («заголовок», «идентификатор_пользователя», «обновленный_ат», «созданный_ат») значения ( чч, 4, 2020-01-04 09:39:53, 2020-01-04 09:39:53))

надеюсь, мы сможем это исправить!


person Mourad Mohammed Benosman    schedule 04.01.2020    source источник
comment
caption и image обязательны в вашем файле миграции. Даже если вы проверяете только caption, как требуется в вашем контроллере.   -  person PtrTon    schedule 04.01.2020
comment
Всегда ли post требуется изображение?   -  person Rwd    schedule 04.01.2020
comment
@PtrTon имеет точку, прочтите сообщение об ошибке - 19 NOT NULL constraint failed: posts.image (SQL:... это означает, что нет данных для поля изображения (posts.image) при вставке в сообщения. Если вы хотите, чтобы данные вставлялись в таблицу с пустым изображением или заголовком, сделайте их допускающими значение NULL или предоставьте данные. Хотя я не вижу варианта использования, в котором эти данные должны допускать значение NULL ...   -  person hajrovica    schedule 04.01.2020
comment
Спасибо за ваши ответы, причина, по которой я проверяю только заголовок по мере необходимости, заключается в том, что, когда я пытался проверить изображение, как требуется, даже если я загрузил изображение, я получил сообщение `` требуется изображение feild '', что означает, как вы говорите нет данных изображения, даже если я загружу его! Я постараюсь выяснить, почему это так!   -  person Mourad Mohammed Benosman    schedule 04.01.2020
comment
Я не мог найти, почему изображение данных пустое?   -  person Mourad Mohammed Benosman    schedule 04.01.2020
comment
Пожалуйста, помогите   -  person Mourad Mohammed Benosman    schedule 04.01.2020
comment
Исправлено, мне пришлось добавить эти две строки: value = {{old ('caption')}} autocomplete = автофокус изображения ›   -  person Mourad Mohammed Benosman    schedule 04.01.2020


Ответы (1)


В переносе таблицы сообщений измените

$table->string('image');

to

$table->string('image')->nullable();

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

$data= \request()->validate ([

    'caption'=>'required'
]);
person macleash    schedule 04.01.2020