سلام دوستان
من برای مقالات می خوام سیستم لایک و دیس لایک درست کنم و فقط کاربران لاگین شده باشن
یک 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');
}
}
آیا مایل به ارسال نوتیفیکیشن و اخبار از طرف راکت هستید ؟