Skip to content

Commit 8e12d6a

Browse files
committed
Implemented like & dislike functionality.
1 parent 54d57f2 commit 8e12d6a

File tree

5 files changed

+20
-7
lines changed

5 files changed

+20
-7
lines changed

app/Http/Controllers/LikeController.php

Lines changed: 9 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
namespace App\Http\Controllers;
44

55
use App\Like;
6+
use App\Post;
67
use Illuminate\Http\Request;
78

89
class LikeController extends Controller
@@ -33,14 +34,17 @@ public function create()
3334
* @param \Illuminate\Http\Request $request
3435
* @return \Illuminate\Http\Response
3536
*/
36-
public function store(Request $request)
37+
public function store(Post $post, Request $request)
3738
{
38-
return $this->user();
39-
40-
// return response('created','200');
39+
40+
$like = $post->likes()->updateOrCreate(
41+
[ 'post_id' => $post->id, 'user_id' => $request->user_id ],
42+
['like' => $request->like ]
43+
);
44+
return response()->json($like, 200);
4145
}
4246

43-
/**
47+
/**
4448
* Display the specified resource.
4549
*
4650
* @param \App\Like $like

app/Like.php

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,4 +17,5 @@ public function post(){
1717
public function user(){
1818
return $this->belongsTo(User::class);
1919
}
20+
2021
}

app/Post.php

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@
55
use Illuminate\Database\Eloquent\Model;
66
use App\Comments;
77
use App\Category;
8+
use App\Like;
89

910
class Post extends Model
1011
{
@@ -27,4 +28,8 @@ public function cateogry(){
2728
return $this->belongsTo(Category::class);
2829
}
2930

31+
public function likes() {
32+
return $this->hasMany(Like::class);
33+
}
34+
3035
}

database/migrations/2022_12_01_182749_create_likes_table.php

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -15,9 +15,10 @@ public function up()
1515
{
1616
Schema::create('likes', function (Blueprint $table) {
1717
$table->bigIncrements('id');
18-
$table->integer('like');
18+
$table->boolean('like');
1919
$table->integer('user_id');
20-
$table->integer('post_id');
20+
$table->bigInteger('post_id')->unsigned();
21+
$table->foreign('post_id')->references('id')->on('posts')->onDelete('cascade');
2122
$table->timestamps();
2223
});
2324
}

routes/api.php

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,8 @@
1717
Route::apiResource('posts','PostController');
1818
Route::apiResource('category','CategoryController');
1919
Route::apiResource('/post/{post}/comment','CommentsController');
20+
Route::apiResource('/post/{post}/like','LikeController');
21+
2022

2123
Route::middleware('auth:api')->get('/user', function (Request $request) {
2224
return $request->user();

0 commit comments

Comments
 (0)