staudenmeir/eloquent-eager-limit-x-laravel-adjacency-list

Merge of staudenmeir/eloquent-eager-limit and staudenmeir/laravel-adjacency-list

v1.2 2023-05-14 09:54 UTC

This package is auto-updated.

Last update: 2024-07-09 13:20:07 UTC


README

CI Code Coverage Scrutinizer Code Quality Latest Stable Version Total Downloads License

Important

The staudenmeir/eloquent-eager-limit package's code has been merged into Laravel 11+ and eager loading limits are now supported natively.

This Laravel package merges staudenmeir/eloquent-eager-limit and staudenmeir/laravel-adjacency-list to allow them being used in the same model.

Supports Laravel 9–10.

Installation

composer require staudenmeir/eloquent-eager-limit-x-laravel-adjacency-list:"^1.0"

Use this command if you are in PowerShell on Windows (e.g. in VS Code):

composer require staudenmeir/eloquent-eager-limit-x-laravel-adjacency-list:"^^^^1.0"

Versions

Laravel Package
10.x 1.1
9.x 1.0

Usage

Trees

Use the HasEagerLimitAndRecursiveRelationships trait in your model:

class User extends Model
{
    use \Staudenmeir\EloquentEagerLimitXLaravelAdjacencyList\Eloquent\HasEagerLimitAndRecursiveRelationships;
}

Limitations

Descendants relationships only support eager loading limits when the query is ordered breadth-first (siblings before children):

$users = User::with([
    'descendants' => function ($query) {
        $query->breadthFirst()->limit(10);
    }
])->get();

*OfDescendants relationships do not support eager loading limits.

Graphs

Use the HasEagerLimitAndGraphRelationships trait in your model:

class Node extends Model
{
    use \Staudenmeir\EloquentEagerLimitXLaravelAdjacencyList\Eloquent\HasEagerLimitAndGraphRelationships;
}

Limitations

Eager loading limits on graph relationships are not supported at the moment.

Contributing

Please see CONTRIBUTING and CODE OF CONDUCT for details.