سلام دوستان من میخام بااستفاده از رابطه یک به چند پولی مورفیک سیستم لایک و دیسلایک برای دوره ها و مقالات و نظرات کاربران قرار بدم یه آموزشی توی سایت لاراکست بود برای این موضوع من یه سری تغییرات دادم لایک میکنم یا دیسلایک صفحه رفرش میشه و همه چی اوکیه اما میخام بدون رفرش شدن صفحه این اتفاق صورت بگیره
دوتا لینک دارم به این شکل
<a href="" id="like" ><i class="fa fa-thumb-up"></i></a>
<a href="" id="like"><i class="fa fa-thumb-down"></i></a>
اینم روتی هست که میخام بفرستم
{{route('articles.likes.store' , $article->id)}}
اینم جدول لایگ
Schema::create('likes', function (Blueprint $table) {
$table->id();
$table->foreignId('user_id')->constrained('users')->cascadeOnDelete();
$table->unsignedInteger('likeable_id');
$table->string('likeable_type');
$table->boolean('liked');
$table->timestamps();
});
همه عملیات لایک و دیسلایک هم توی این trait انجام دادم و تریت رو توی سه تا مدل مورد نظر یوز کردم
trait Likeable
{
public function scopeWithLikes(Builder $query)
{
$query->leftJoinSub(
'select likeable_id , sum(liked) likes , sum(!liked) dislikes from likes group by likeable_id',
);
}
public function likes()
{
return $this->morphMany(Like::class, 'likeable');
}
public function isDisLikedBy(User $user)
{
return (bool) $user->likes
->where('likeable_id', $this->id)
->where('liked', false)
->count();
}
public function isLikedBy(User $user)
{
return (bool) $user->likes
->where('likeable_id', $this->id)
->where('liked', true)
->count();
}
public function like($user = null, $liked = true)
{
$this->likes()->updateOrCreate(
[
'user_id' => $user ? $user->id : auth()->id()
],
[
'liked' => $liked
]
);
}
public function dislike($user = null)
{
return $this->like($user, false);
}
}
الان از دوستان عزیز با این توضیحاتی که عرض کردم میشه بهم راهنمایی بدند که ایا اموزشی هست برای این موضوع که بصورت ایجکس داده ها رو ارسال کرد به این روت و توی کنترلر دریافت کرد اگر اموزش یا نمونه کدی دارن ممنون میشم بهم معرفی کنن
باید درخواست رو به صورت Ajax ارسال کنی
جوابش رو که گرفتی با استفاده از jQuery یا خود جاوااسکریپت
المان مورد نظر رو پیدا کن و آپدیت کن
میتونی به المان مربوطه یه Id بدی
<i id="like-thumb" class="fa fa-thumb-up"></i>
و کلاسش رو بر اساس جواب برگشتی درخواست Ajax, مقدار دهی کنی
آیا مایل به ارسال نوتیفیکیشن و اخبار از طرف راکت هستید ؟