如何检查用户在laravel中是否喜欢某些帖子

时间:2017-10-07 13:07:43

标签: php laravel eloquent

我有postsusersfavorites表格。 例如,我为一个id为3的用户收藏了一些帖子,如下所示:

User::find(3)->favorites()->attach($post->id);

如果用户发送了两次请求,则会将此收藏夹与此post_iduser_id两次插入。 我想检查此用户是否不喜欢帖子,然后将记录保存在数据库中。 或者如果一个帖子被收藏,那么它就会不受欢迎。 我怎么能用雄辩的关系来做到这一点? 我有UserPost个模特。

1 个答案:

答案 0 :(得分:3)

您可以使用toggle()

User::find(3)->favorites()->toggle($post->id);

如果它不喜欢它,它会喜欢它,如果它不喜欢它。

如果您只是希望该功能不与表格中的喜欢重复,请使用syncWithoutDetaching

User::find(3)->favorites()->syncWithoutDetaching([$post->id]);

将其放在您的用户模型上:

class User extends Model {

  public function like($postId){
    $this->favorites()->syncWithoutDetaching([$post->id]);
  }

  public function unlike($postId){
    $this->favorites()->detach([$post->id]);
  }
}