• Час читання ~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);

Модель Like є вбудованою в пакет, але ви також можете створювати власні моделі позначок, наприклад 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