为了账号安全,请及时绑定邮箱和手机立即绑定

添加喜欢的帖子(laravel)

添加喜欢的帖子(laravel)

PHP
哆啦的时光机 2022-01-14 15:43:19
我有一个用laravel构建的博客。我想在我的帖子中添加喜欢。所以我创建了一个带有表格的模型。Likelikes这就是我在我的Like 模型中所做的    public function post(){        return $this->belongsTo(Post::class);    }    public function user(){        return $this->belongsTo(User::class);    }在我的帖子和用户模型中    public function likes(){        return $this->hasMany(Like::class);    }和我的喜欢表的迁移文件        Schema::create('likes', function (Blueprint $table) {            $table->bigIncrements('id');            $table->foreign('post_id')->references('id')->on('posts');            $table->foreign('user_id')->references('id')->on('users');            $table->boolean('value');            $table->timestamps();        });我想以这种方式在我的控制器中设置值!public function liker($postID, $userID, $value){        $like = new Like([            'post_id' => $postID,            'user_id' => $userID,            'value' => $value        ]);        $like->save();        return redirect()->back();    }但视图返回 419 错误页面。(页面已过期)并且没有任何更改(无行)添加到我的数据库(喜欢表)!你能帮助我吗?
查看完整描述

1 回答

?
犯罪嫌疑人X

TA贡献2080条经验 获得超4个赞

你不需要value一个like,如果它存在,它是一个“like”,你应该使用 is 作为一个数据透视表(你已经有 2 个外国 ID)


Schema::create('likes', function (Blueprint $table) {

    $table->unsignedInteger('post_id');

    $table->unsignedInteger('user_id');

    $table->foreign('post_id')->references('id')->on('posts');

    $table->foreign('user_id')->references('id')->on('users');

    $table->tinyInteger('is_dislike')->default(0);

    $table->timestamps();

});

Post然后声明和之间的关系User


邮政


public function votedUsers(){ //or simply likes

    return $this->belongsToMany(User::class, 'likes')->withPivot('is_dislike')->withTimestamps();

}

用户


public function votedPosts(){

    return $this->belongsToMany(Post::class, 'likes')->withPivot('is_dislike')->withTimestamps();

}

接下来创建一个like 就这样做


public function liker($postId, $userId, $value){

    $user = User::findOrFail($userId); //or use auth()->user(); if it's the authenticated user

    $user->votedPosts()->attach($postId);

    return redirect()->back();

}

改为删除类似的使用detach($postId)。


对于不喜欢


$user->votedPosts()->attach($postId, ['is_dislike' => 1]);


查看完整回答
反对 回复 2022-01-14
  • 1 回答
  • 0 关注
  • 106 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信