我有posts
,users
和favorites
表格。
例如,我为一个id为3的用户收藏了一些帖子,如下所示:
User::find(3)->favorites()->attach($post->id);
如果用户发送了两次请求,则会将此收藏夹与此post_id
,user_id
两次插入。
我想检查此用户是否不喜欢帖子,然后将记录保存在数据库中。
或者如果一个帖子被收藏,那么它就会不受欢迎。
我怎么能用雄辩的关系来做到这一点?
我有User
,Post
个模特。
答案 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]);
}
}