передать значение по умолчанию в базу данных - PullRequest
0 голосов
/ 15 октября 2018

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

public function saveMedia(Request $request){
        $uid = $request->user()->id;
        $fileExtensionValidation = Validator::make($request->all(), [
            'file' => 'mimes:jpeg,png,bmp,tiff'
        ]);
        if(!$fileExtensionValidation->fails()){
            $file = $request->file('file')->store('');
            $filename = str_replace('public/','',$file);
            $id = DB::table('medias')->insertGetId([
                'name'=>$filename,
                'hash'=>hash('sha256', \Storage::get($file)),
                'uploader_id'=>$uid,
                'hide'=> 0,
                'created_at' => Carbon::now()
               ]);
            $url = \Storage::temporaryUrl($filename, now()->addDays(2));

            return ['id'=>$id, 'url'=>$url];
       } else{
           return abort(501, 'File format not supported');
       }
    }

Route api.php

Route::group(['middleware'=>['auth:api', \App\Http\Middleware\OnlyRegisteredUsers::class]], function(){
    /**
     * Group for registered users only APIs
     */
    Route::post('savePost','UserController@savePost');
});

файл миграции

 public function up()
    {
        Schema::create('posts', function (Blueprint $table) {
            $table->increments('id');
            $table->string('title');
            $table->longText('content');
            $table->string('short_description');
            $table->unsignedInteger('media_id')->nullable();
            $table->foreign('media_id')->references('id')->on('medias');
            $table->unsignedInteger('creator_id');
            $table->foreign('creator_id')->references('id')->on('users');
            $table->boolean('hide')->default(0);
            $table->timestamps();
        });
    }

я добавил новый столбец в эту миграцию

public function up()
    {
      Schema::table('posts', function (Blueprint $table) {
        $table->integer('privacy')->after('creator_id');
        });
    }

, если я передаю значение в поле конфиденциальности, происходит в БДно если я оставлю это поле пустым, это выдаст мне ошибку.

SQLSTATE [23000]: нарушение ограничения целостности: 1048 «Конфиденциальность» столбца не может быть нулевой (SQL: вставить в posts (title), content, short_description, media_id, creator_id, privacy, created_at, updated_at) значения (Swift Reads, приложение для социальных сетей, вы можете загружать сообщения СМИ, можете комментировать сообщения, можетеupvote downvote posts, 1, 25,, 2018-10-15 06:00:59, 2018-10-15 06:00:59)) ",

...