مهرداد
3 سال پیش توسط مهرداد مطرح شد
1 پاسخ

لایک و دیسلایک در لاراول

سلام دوستان من میخام بااستفاده از رابطه یک به چند پولی مورفیک سیستم لایک و دیسلایک برای دوره ها و مقالات و نظرات کاربران قرار بدم یه آموزشی توی سایت لاراکست بود برای این موضوع من یه سری تغییرات دادم لایک میکنم یا دیسلایک صفحه رفرش میشه و همه چی اوکیه اما میخام بدون رفرش شدن صفحه این اتفاق صورت بگیره
دوتا لینک دارم به این شکل

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

الان از دوستان عزیز با این توضیحاتی که عرض کردم میشه بهم راهنمایی بدند که ایا اموزشی هست برای این موضوع که بصورت ایجکس داده ها رو ارسال کرد به این روت و توی کنترلر دریافت کرد اگر اموزش یا نمونه کدی دارن ممنون میشم بهم معرفی کنن


ثبت پرسش جدید
علی بیات
تخصص : توسعه دهنده ارشد وب
@ali.bayat 3 سال پیش مطرح شد
1

باید درخواست رو به صورت Ajax ارسال کنی
جوابش رو که گرفتی با استفاده از jQuery یا خود جاوااسکریپت
المان مورد نظر رو پیدا کن و آپدیت کن

میتونی به المان مربوطه یه Id بدی


<i id="like-thumb" class="fa fa-thumb-up"></i>

و کلاسش رو بر اساس جواب برگشتی درخواست Ajax, مقدار دهی کنی


برای ارسال پاسخ لازم است وارد شده یا ثبت‌نام کنید

ورود یا ثبت‌نام