• Время чтения ~1 мин
  • 20.06.2022

Laravel Markable — это пакет для интеграции лайков, закладок, избранного, реакций и пользовательских отметок в ваше приложение.

Основное использование заключается в добавлении черты Markable и типов "меток", которые вы хотите разрешить для данной модели.Например, если у вас есть модель Курс и вы хотите, чтобы курс понравился пользователям:

namespace App\Models;
 
use Illuminate\Database\Eloquent\Model;
use Maize\Markable\Markable;
use Maize\Markable\Models\Like;
 
class Course extends Model
{
    use Markable;
 
    protected $fillable = [
        'title',
        'description',
    ];
 
    protected static $marks = [
        Like::class,
    ];
}

При наличии этой модели управление отметками с помощью этого пакета выглядит следующим образом:

use App\Models\Course;
use Maize\Markable\Models\Like;
 
// marks the course liked for the given user
Like::add($course, $user);
 
// unmarks the course liked for the given user
Like::remove($course, $user);
 
// toggles the course like for the given user
Like::toggle($course, $user);
 
// returns whether the given user likes a course or not
Like::has($course, $user);
 
// returns how many users like a course
Like::count($course);

Модель Нравится встроена в пакет, но вы также можете создавать собственные модели отметок, такие как Pledge, которые позволяют пользователю объявить пожертвование в пользу причина.

Пакет включает в себя различные типы меток, в том числе:

  • Bookmark
  • Favorite
  • Like
  • Reaction

С другой стороны, добавив отметку "Мне нравится" для пользователя, вы можете вывести список всех отметок "Нравится" для данного пользователя, чтобы он мог видеть, какие курсы ему понравились:

// All course models with a like from the given user
Course::whereHasLike(
    auth()->user()
)->get();
 
// All post models with a 'heart' reaction from the given user
Post::whereHasReaction(
    auth()->user(),
    'heart'
)->get();

Вы можете узнать больше об этом пакете, получить полные инструкции по установке и просмотреть

Перейти к оригиналу

Comments

No comments yet
Yurij Finiv

Yurij Finiv

Full stack

Про мене

Professional Fullstack Developer with extensive experience in website and desktop application development. Proficient in a wide range of tools and technologies, including Bootstrap, Tailwind, HTML5, CSS3, PUG, JavaScript, Alpine.js, jQuery, PHP, MODX, and Node.js. Skilled in website development using Symfony, MODX, and Laravel. Experience: Contributed to the development and translation of MODX3 i...

Об авторе CrazyBoy49z
WORK EXPERIENCE
Контакты
Ukraine, Lutsk
+380979856297