2017-10-07 9 views
0

私はpostsusersfavoritesのテーブルを持っています。laravelのユーザーが好きな投稿があるかどうかを確認する方法

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

と、ユーザーが要求を送信した場合に二回、それは二回、このpost_iduser_idでこのお気に入りを挿入します: は例えば、私はいくつかのポストは、このような3のIDを持つユーザーのために、お気に入りに登録します。 このユーザーが投稿を好きでないかどうかを確認してから、データベースにレコードを保存します。 または投稿がお気に入りの場合はそれを否定します。 どうすれば雄弁な関係でこれを行うことができますか? 私はUserPostモデルを持っています。

+0

使用クエリーメソッドのhttps://でlaravel .com/docs/5.5/queries –

答えて

3

あなたはtoggle()を使用することができます。

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

それがある場合、これは、それは言っていない場合は、それを好きで、それとは異なります。

あなただけのただsyncWithoutDetachingを使用し、テーブル内の同類を重複しない機能が必要な場合:

あなたのUserモデルでこれを置く
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]); 
    } 
} 
関連する問題