PHPackages                             yuptogun/laravel-model-traits - PHPackages - PHPackages  [Skip to content](#main-content)[PHPackages](/)[Directory](/)[Categories](/categories)[Trending](/trending)[Leaderboard](/leaderboard)[Changelog](/changelog)[Analyze](/analyze)[Collections](/collections)[Log in](/login)[Sign up](/register)

1. [Directory](/)
2. /
3. [Utility &amp; Helpers](/categories/utility)
4. /
5. yuptogun/laravel-model-traits

ActiveLibrary[Utility &amp; Helpers](/categories/utility)

yuptogun/laravel-model-traits
=============================

utility traits and interfaces that have helped myself

00PHP

Since Mar 30Pushed 5y ago1 watchersCompare

[ Source](https://github.com/yuptogun/laravel-model-traits)[ Packagist](https://packagist.org/packages/yuptogun/laravel-model-traits)[ RSS](/packages/yuptogun-laravel-model-traits/feed)WikiDiscussions main Synced 2d ago

READMEChangelogDependenciesVersions (1)Used By (0)

Helpful Laravel model traits/interfaces
=======================================

[](#helpful-laravel-model-traitsinterfaces)

I've helped myself with these code snippets. Hope someone else would be helped too.

Quick start: examples
---------------------

[](#quick-start-examples)

### Activation

[](#activation)

```
class Membership extends \Illuminate\Database\Eloquent\Model, \Yuptogun\LaravelModel\Interfaces\ActivatableModel
{
    use \Yuptogun\LaravelModel\Traits\HasActivationAttributes;

    public function getStartsAtFieldAttribute()
    {
        return 'membership_begins_at';
    }
    public function getEndsAtFieldAttribute()
    {
        return 'membership_expires_at';
    }
}

if (!$user->membership->is_active) {
    throw new \Exception('please get a membership!');
}
```

### Rotating values

[](#rotating-values)

```
class User extends \Illuminate\Database\Eloquent\Model, \Yuptogun\LaravelModel\Interfaces\ValueRotatingModel
{
    use \Yuptogun\LaravelModel\Traits\HasRotatingAttributes;

    public function getRotatingFieldsAttribute()
    {
        return [
            'hidden' => [1, 0],
        ];
    }
}

if ($user->switchField('hidden')) {
    return 'switched visibility!';
}
```

### Sortable

[](#sortable)

```
class Episode extends \Illuminate\Database\Eloquent\Model, \Yuptogun\LaravelModel\Interfaces\SortableModel
{
    use \Yuptogun\LaravelModel\Traits\HasSortableOrderAttribute;

    public function getSortableOrderFieldAttribute()
    {
        return 'episode_sort';
    }
}

$episode_sort = request()->input('episode');
if ((new Episode)->sortBySortableOrder($episode_sort)) {
    return 'reordered!';
}
```

### Recursive models

[](#recursive-models)

```
class Curriculum extends \Illuminate\Database\Eloquent\Model, \Yuptogun\LaravelModel\Interfaces\RecursiveModel
{
    use \Yuptogun\LaravelModel\Traits\IsRecursiveModel;

    public function getCteKeyChildAttribute()
    {
        return 'crcl_no';
    }
    public function getCteKeyParentAttribute()
    {
        return 'p_crcl_no';
    }
}

if ($curri->allParents()->grandParents()->first()->crcl_no == 2) {
    return 'Second grade curriculum';
}
```

###  Health Score

15

—

LowBetter than 3% of packages

Maintenance20

Infrequent updates — may be unmaintained

Popularity0

Limited adoption so far

Community4

Small or concentrated contributor base

Maturity30

Early-stage or recently created project

How is this calculated?**Maintenance (25%)** — Last commit recency, latest release date, and issue-to-star ratio. Uses a 2-year decay window.

**Popularity (30%)** — Total and monthly downloads, GitHub stars, and forks. Logarithmic scaling prevents top-heavy scores.

**Community (15%)** — Contributors, dependents, forks, watchers, and maintainers. Measures real ecosystem engagement.

**Maturity (30%)** — Project age, version count, PHP version support, and release stability.

### Community

Maintainers

![](https://www.gravatar.com/avatar/32823e281b0b5d97347801f5e6396154a0a68a54797c5dc86cbbaa2db7a481e3?d=identicon)[yuptogun](/maintainers/yuptogun)

### Embed Badge

![Health badge](/badges/yuptogun-laravel-model-traits/health.svg)

```
[![Health](https://phpackages.com/badges/yuptogun-laravel-model-traits/health.svg)](https://phpackages.com/packages/yuptogun-laravel-model-traits)
```

###  Alternatives

[creitive/breadcrumbs

Simple breadcrumbs class

86466.4k7](/packages/creitive-breadcrumbs)[wapmorgan/php-code-analyzer

A program that finds usage of different non-built-in extensions in your php code.

96143.2k4](/packages/wapmorgan-php-code-analyzer)[statamic/collaboration

Real-time collaboration and multi-user authoring for Statamic Pro.

3688.4k](/packages/statamic-collaboration)[michalsn/codeigniter4-uuid

UUID and ULID package for CodeIgniter 4 with support for Model.

4728.7k4](/packages/michalsn-codeigniter4-uuid)[ttree/scheduler

Simple task scheduler for Neos Flow Framework

21108.8k1](/packages/ttree-scheduler)[fanor51/headless-container-support

Extension that adds container support for TYPO3 Headless extension

1142.1k](/packages/fanor51-headless-container-support)

PHPackages © 2026

[Directory](/)[Categories](/categories)[Trending](/trending)[Changelog](/changelog)[Analyze](/analyze)
