Маршрут

Route::group(['middleware'=>['auth:api', \App\Http\Middleware\OnlyRegisteredUsers::class]], function(){
    Route::post('commentOnPost','UserController@commentOnPost');
});

Миграция после создания этой миграции я выполнил команду php artisan migrate

 public function up()
    {
        Schema::create('comments', function (Blueprint $table) {
            $table->increments('id');
            $table->unsignedInteger('user_id');
            $table->foreign('user_id')->references('id')->on('users');
            $table->unsignedInteger('post_id');
            $table->foreign('post_id')->references('id')->on('posts');
            $table->string('comment');
            $table->boolean('hide')->default(0);
            $table->timestamps();
        });
    }

Контроллер показывает ошибку в контроллере

public function commentOnPost(Request $request){
    $userid = $request->user()->id;
    $postid = $request->get('post_id');
    $comment = trim($request->get('comment'));
    //dump($comment);
    $user = User::where(['id'=>$userid, 'hide'=>0])->first();

    $post = DB::table('posts')->where(['id'=>$postid])->first();

    if($user && $post && $comment){
        DB::table('comments')->insert([
            'user_id' => $userid,
            'post_id' => $postid,
            'comment' => $comment,
            'hide' => 0,
            'created_at' => Carbon::now(),
            'updated_at' => Carbon::now()
        ]);
        return ['message'=>'ok'];
    }else{
        return abort('403', 'Invalid Request');
    }
}

Я получаю сообщение об ошибке Исключение SQL: исключение нарушения ограничения целостности SQL

0
jitendra katke 8 Окт 2018 в 09:51

2 ответа

Лучший ответ

Вы должны попробовать это:

public function commentOnPost(Request $request){
    $userid = $request->user()->id;
    $postid = $request->get('post_id');
    $comment = trim($request->get('comment'));
    //dump($comment);
    $user = User::where(['id'=>$userid, 'hide'=>0])->first();

    $post = DB::table('posts')->where(['id'=>$postid,'hide'=>0])->first();

    if($user && $post && $comment){
        DB::table('comments')->insert([
            'user_id' => $user->id,
            'post_id' => $post->id,
            'comment' => $comment,
            'hide' => 0,
            'created_at' => Carbon::now(),
            'updated_at' => Carbon::now()
        ]);
        return ['message'=>'ok'];
    }else{
        return abort('403', 'Invalid Request');
    }
}
1
user10186369user10186369 8 Окт 2018 в 06:59

Я протестировал этот код в своей системе, есть небольшая ошибка

$post = DB::table('posts')->where(['id'=>$postid])->first();

так должно быть

$post = DB::table('posts')->where(['id'=>$postid,'hide'=>0])->first();
0
Prathamesh Doke 8 Окт 2018 в 06:54