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?
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;
}