Пользователь не может оставлять комментарии в laravel - PullRequest
0 голосов
/ 08 октября 2018

Маршрут

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

Ответы [ 2 ]

0 голосов
/ 08 октября 2018

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

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');
    }
}
0 голосов
/ 08 октября 2018

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

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

это должно быть

$post = DB::table('posts')->where(['id'=>$postid,'hide'=>0])->first();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...