2017-10-07 1 views
0

나는 posts, usersfavorites 테이블을 가지고 있습니다. 예를 들어,이 추천의 ID와 사용자의 즐겨 찾기 일부 포스트합니다laravel에서 사용자가 좋아하는 게시물이 있는지 확인하는 방법

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

를 사용자가 요청을 보내는 경우 두 번 두 번이 post_id, user_id와이 좋아하는을 삽입합니다. 이 사용자가 게시물을 좋아하지 않는지 확인한 다음 데이터베이스에 레코드를 저장하고 싶습니다. 또는 게시물이 즐겨 찾기 인 경우 선호하지 않습니다. 나는 웅변적인 관계로이를 어떻게 할 수 있습니까 ?? 나는 User, Post 모델을 보유하고 있습니다.

+0

사용 쿼리 방법 https : //로 laravel를 .com/docs/5.5/queries –

답변

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]); 
    } 
}