Search code examples
laraveleloquentlaravel-5mode

Laravel Eloquent for Social Network


User->post->likes

I'm building a social network. I have Users and Posts. for like concept I created a table (Likes): _______________________ |id | post_id | user_id | | | | |

I want to show people who like a post below each post. so I need to save a row for each Like . My problem is Eloquent and how to save a Like row

    $post = Post::find($request->postId);
    $like = new Likes();
    $user = $request->user();
    $post->likes()->save($like, $user);
    return 'done';

this code set user_id (Likes tabel) 0

is there a better way for Like Concept?


Solution

  • in your controller use this method : public function postLikePost(Request $request) { $post_id = $request['postId']; $is_like = $request['isLike'] === 'true' ? true:false; $update = false; $post = Post::find($post_id); if(!$post){ return null; } $user = Auth::user(); $like = $user->likes()->where('post_id',$post_id)->first(); if($like){ $liked = $like->likes; $update = true; if($liked == $is_like) { $like->delete(); return null; } } else { $like = new Like(); //die($like); }

        $like->likes = $is_like;
        $like->user_id = $user->id;
        $like->post_id = $post->id;
        if($update){
            $like->update();
        }
        else{
            $like->save();
        }
        return null;
        }