PHPackages                             dedmytro/laravel-model-related-fields - 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. [Database &amp; ORM](/categories/database)
4. /
5. dedmytro/laravel-model-related-fields

ActiveLibrary[Database &amp; ORM](/categories/database)

dedmytro/laravel-model-related-fields
=====================================

Provide an ability to add related fields/columns to all model Eloquent queries

0.1(4y ago)37MITPHPPHP ^7.2.5|^8.0

Since Oct 23Pushed 4y ago1 watchersCompare

[ Source](https://github.com/DeDmytro/laravel-model-related-fields)[ Packagist](https://packagist.org/packages/dedmytro/laravel-model-related-fields) Fund[ RSS](/packages/dedmytro-laravel-model-related-fields/feed)WikiDiscussions dev Synced 2d ago

READMEChangelog (1)Dependencies (4)Versions (2)Used By (0)

Laravel Model Related Fields
============================

[](#laravel-model-related-fields)

Provide an ability to add related fields/columns to all model Eloquent queries without additional database queries. It uses sub SELECT and joins so take into account extra database load when database has a lot of records.

[![Stable Version](https://camo.githubusercontent.com/b0bbd6d27b4ebe8908e565b7ed17b72e5f4cf0ff16e647c964f76c418ff57f9a/68747470733a2f2f696d672e736869656c64732e696f2f6769746875622f762f72656c656173652f6465646d7974726f2f6c61726176656c2d6d6f64656c2d72656c617465642d6669656c64733f6c6162656c3d737461626c65267374796c653d666c61742d737175617265)](https://packagist.org/packages/dedmytro/laravel-model-related-fields)[![Unstable Version](https://camo.githubusercontent.com/85afbac0745eb275d863cee4b1701a70c0e30315d27990b00f1abd553b8761e8/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f756e737461626c652d6465762d2d6d61696e2d6f72616e67653f7374796c653d666c61742d737175617265)](https://packagist.org/packages/dedmytro/laravel-model-related-fields)[![Total Downloads](https://camo.githubusercontent.com/9d80d021944ba0720c77039887b759a7335700504d56f123dc6966c2338ed755/68747470733a2f2f696d672e736869656c64732e696f2f7061636b61676973742f64742f6465646d7974726f2f6c61726176656c2d6d6f64656c2d72656c617465642d6669656c64732e7376673f7374796c653d666c61742d737175617265)](https://packagist.org/packages/dedmytro/laravel-model-related-fields)[![License](https://camo.githubusercontent.com/c6fdfe6120113fcc73b89a4bea7ca6cd4c9cd09f697dd3f79f340771f1eedd37/68747470733a2f2f696d672e736869656c64732e696f2f7061636b61676973742f6c2f6465646d7974726f2f6c61726176656c2d6d6f64656c2d72656c617465642d6669656c64732e7376673f7374796c653d666c61742d737175617265)](LICENSE)

Table of contents
-----------------

[](#table-of-contents)

- [Installation](#installation)
- [Using](#using)

Installation
------------

[](#installation)

To get the latest version of `Laravel Model Related Fields`, simply require the project using [Composer](https://getcomposer.org):

```
$ composer require dedmytro/laravel-model-related-fields
```

Or manually update `require` block of `composer.json` and run `composer update`.

```
{
    "require": {
        "dedmytro/laravel-model-related-fields": "^0.1"
    }
}
```

Using
-----

[](#using)

Add `HasRelatedFields` trait to your model and define method `addRelatedFields()`which returns array related fields you want to load on each Model query. On example below you can see how to load related field through many relations and load SUM() of HasMany relation.

```
use Illuminate\Database\Eloquent\Model;
use DeDmytro\LaravelModelRelatedFields\RelatedField;
use DeDmytro\LaravelModelRelatedFields\Traits\HasRelatedFields;
// ...

class Order extends Model
{
    use HasRelatedFields;

    // ...

    protected function addRelatedFields(): array
    {
        return [
            'country_currency' => 'event.company.country.currency',
            'total' => new RelatedField('items.total', function ($query) {
                $query->selectRaw('SUM(price)');
            }),
        ];
    }
```

where

`'event.company.country.currency'` is the same as `$order->event->company->country->currency`

`'items.total'` is the same as `$order->items()->sum('price')`

As an alternative you can use `$relatedFields` property for simple fields, without `RelatedField` class usage. Property and method result array will be be merged.

```
use Illuminate\Database\Eloquent\Model;
use DeDmytro\LaravelModelRelatedFields\RelatedField;
use DeDmytro\LaravelModelRelatedFields\Traits\HasRelatedFields;
// ...

class Order extends Model
{
    use HasRelatedFields;

    // ...

    protected $relatedFields = [
      'country_currency' => 'event.company.country.currency',
   ];

    protected function addRelatedFields(): array
    {
        return [
            'total' => new RelatedField('items.total', function ($query) {
                $query->selectRaw('SUM(price)');
            }),
        ];
    }
```

The result of query:

```
$order = Order::first();
```

you will get Order model with all fields plus additional related fields:

```
[
    "id" => 1,
    // ...
    "country_currency" => "USD",
    "total" => 25.00,
]
```

### How to disable/enable

[](#how-to-disableenable)

#### Disable globally

[](#disable-globally)

To disable related fields for all models by default,

- publish config and change default value

```
'enabled' => false
```

- add env variable

```
ENABLE_MODEL_RELATED_FIELDS=false
```

#### Disable for particular model

[](#disable-for-particular-model)

Add `protected $enableRelatedFields = false`

```
protected $enableRelatedFields = false;
```

#### Disable for current query

[](#disable-for-current-query)

```
$order = Order::withoutRelatedFields()->first();
```

#### Enable for current query if disabled globally

[](#enable-for-current-query-if-disabled-globally)

```
$order = Order::withRelatedFields()->first();
```

###  Health Score

22

—

LowBetter than 22% of packages

Maintenance20

Infrequent updates — may be unmaintained

Popularity8

Limited adoption so far

Community7

Small or concentrated contributor base

Maturity45

Maturing project, gaining track record

 Bus Factor1

Top contributor holds 100% of commits — single point of failure

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.

###  Release Activity

Cadence

Unknown

Total

1

Last Release

1662d ago

### Community

Maintainers

![](https://www.gravatar.com/avatar/e3cbc20c5a734250907e6f106f4067521561272a0aff6f423df72810efa4e85e?d=identicon)[DeDmytro](/maintainers/DeDmytro)

---

Top Contributors

[![DeDmytro](https://avatars.githubusercontent.com/u/13836815?v=4)](https://github.com/DeDmytro "DeDmytro (5 commits)")

---

Tags

laravellaravel model fieldslaravel join related model fieldslaravel query optimization

###  Code Quality

TestsPHPUnit

### Embed Badge

![Health badge](/badges/dedmytro-laravel-model-related-fields/health.svg)

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

###  Alternatives

[illuminate/database

The Illuminate Database package.

2.8k52.4M9.4k](/packages/illuminate-database)[tucker-eric/eloquentfilter

An Eloquent way to filter Eloquent Models

1.8k4.8M26](/packages/tucker-eric-eloquentfilter)[watson/validating

Eloquent model validating trait.

9723.3M47](/packages/watson-validating)[cybercog/laravel-love

Make Laravel Eloquent models reactable with any type of emotions in a minutes!

1.2k302.7k1](/packages/cybercog-laravel-love)[cviebrock/eloquent-taggable

Easy ability to tag your Eloquent models in Laravel.

567694.8k3](/packages/cviebrock-eloquent-taggable)[clickbar/laravel-magellan

This package provides functionality for working with the postgis extension in Laravel.

423715.4k1](/packages/clickbar-laravel-magellan)

PHPackages © 2026

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