سلام دوستان
من برای مقالات می خوام سیستم لایک و دیس لایک درست کنم و فقط کاربران لاگین شده باشن
یک table به نام likes درست کردم و ستون های user_id و blog_id هرکدوم رابطه یک به چند با user و blog دارن
Schema::create('likes', function (Blueprint $table) { $table->unsignedBigInteger('blog_id'); $table->foreign('blog_id')->references('id')->on('blogs')->onDelete('cascade'); $table->unsignedBigInteger('user_id'); $table->foreign('user_id')->references('id')->on('users')->onDelete('cascade'); $table->unique(['blog_id' , 'user_id']); });
تو مدل هم روابط رو درست کردم
class Like extends Model { use HasFactory; protected $fillable = [ 'blog_id' , 'user_id']; public function user() { return $this->belongsTo(User::class); } public function blog() { return $this->belongsTo(Blog::class); } }
حالا در کامپوننت لایو وایر اول چک کردم که لاگین کرده یا نه
بعد می خوام چک کنم اگه قبلا لایک کرده بود لایک کم بشه و اگر نه یک لایک اضافه بشه ولی اینو نمیدونم چجوری انجام بدم
کد کامپوننت
class AllBlogs extends Component { public function addLike($id) { if (Auth::user()) { $blog = Blog::findOrFail($id); }else{ alert()->error('برای لایک باید وارد سایت شوید'); } } public function render() { $blogs= Blog::with('likes')->paginate(3); return view('livewire.all-blogs' , compact('blogs'))->layout('user.layouts.mater'); } }
الان در متد addLike نمیدونم چیکار کنم
ممنون میشم راهنمایی کنید
@mohaligateway
@Rp76
@juza66
@ali.bayat
@hesammousavi
سلام از این کد استفاده کنید.
class AllBlogs extends Component { public function addLike($id) { if (Auth::user()) { $blog = Blog::findOrFail($id); $like = Like::where('blog_id',$id)->where('user_id',auth()->user()->id)->first(); if ($like) $like->delete(); else { $like = Like::create(['blog_id'=>$id,'user_id'=>auth()->user()->id]); } }else{ alert()->error('برای لایک باید وارد سایت شوید'); } } public function render() { $blogs= Blog::with('likes')->paginate(3); return view('livewire.all-blogs' , compact('blogs'))->layout('user.layouts.mater'); } }
آیا مایل به ارسال نوتیفیکیشن و اخبار از طرف راکت هستید ؟