Purpose of this repository is to enable tags for any Laravel model.
Require the package with composer require asseco-voice/laravel-tags
.
Service provider will be registered automatically.
In order to use the package, migrate the tables with artisan migrate
and add Taggable
trait to model you'd like to have tag support on.
Standard CRUD endpoints are exposed for tag administration. Due to the fact that tags are a polymorphic relation, you have to provide your own controllers for attaching/detaching those tags to taggable models.
Example:
// Routes
Route::post('models/{model}/tags', [ModelTagController::class, 'store']);
// Controller
public function store(Request $request, Model $model): JsonResponse
{
$ids = Arr::get($request->validated(), 'tag_ids', []);
$model->tags()->sync($ids);
return response()->json('success');
}
Publishing the configuration will enable you to change package models as well as controlling how migrations behave. If extending the model, make sure you're extending the original model in your implementation.