Download the PHP package pindab0ter/constrained-morph-to-for-laravel without Composer
On this page you can find all versions of the php package pindab0ter/constrained-morph-to-for-laravel. It is possible to download/install these versions without Composer. Possible dependencies are resolved automatically.
Download pindab0ter/constrained-morph-to-for-laravel
More information about pindab0ter/constrained-morph-to-for-laravel
Files in pindab0ter/constrained-morph-to-for-laravel
Package constrained-morph-to-for-laravel
Short Description Constrained polymorphic relationships for Laravel Eloquent - limit morphTo relationships to specific model types
License MIT
Homepage https://github.com/pindab0ter/constrained-morph-to-for-laravel
Informations about the package constrained-morph-to-for-laravel
Constrained MorphTo for Laravel
This package provides type-constrained polymorphic relationships for Laravel Eloquent. It extends Laravel’s morphTo relationship to only accept specific model types, ensuring data integrity and type safety for your polymorphic relations.
The Problem
Laravel’s polymorphic relationships are flexible - a single relationship can relate to multiple model types. But sometimes you want the flexibility of a polymorphic database structure while enforcing that certain relationships only accept specific types:
The Solution
This package lets you constrain polymorphic relationships to specific types:
Requirements
- PHP 8.2+
- Laravel 10.48+, 11.x, 12.x, or 13.x
Installation
Install the package via Composer:
Usage
Basic Usage
-
Add the
HasConstrainedMorphTotrait to your model: -
When the relationship type matches, it works like normal
morphTo: - When the type doesn't match the constraint, it returns
null:
Multiple Allowed Types
You can allow multiple model types in a single relationship by passing an array:
Now the relationship will accept either type:
Advanced Usage
You can optionally specify the relationship name and owner key:
Changelog
Please see CHANGELOG for more information on what has changed recently.
License
The MIT License (MIT). Please see License File for more information.