Weave Code
Code Weaver
Helps Laravel developers discover, compare, and choose open-source packages. See popularity, security, maintainers, and scores at a glance to make better decisions.
Feedback
Share your thoughts, report bugs, or suggest improvements.
Subject
Message

Lara Asp Eloquent Laravel Package

lastdragon-ru/lara-asp-eloquent

View on GitHub
Deep Wiki
Context7

(Laravel) Eloquent Helpers

This package contains useful extensions and mixins for Eloquent.

Requirements

Requirement Constraint Supported by
PHP ^8.5 HEAD ⋯ 11.0.0
^8.4 HEAD ⋯ 8.0.0
^8.3 10.3.0 ⋯ 5.0.0
^8.2 7.2.0 ⋯ 2.0.0
^8.1 6.4.2 ⋯ 2.0.0
^8.0 4.6.0 ⋯ 2.0.0
^8.0.0 1.1.2 ⋯ 0.12.0
>=8.0.0 0.11.0 ⋯ 0.4.0
>=7.4.0 0.3.0 ⋯ 0.1.0
Laravel ^13.10.0 HEAD , 11.1.0
^13.0.0 11.0.0
^12.0.1 10.3.0 ⋯ 9.0.0
^11.0.8 8.1.1 ⋯ 8.0.0
^11.0.0 7.2.0 ⋯ 6.2.0
^10.34.0 7.2.0 ⋯ 6.2.0
^10.0.0 6.1.0 ⋯ 2.1.0
^9.21.0 5.6.0 ⋯ 5.0.0-beta.1
^9.0.0 5.0.0-beta.0 ⋯ 0.12.0
^8.22.1 3.0.0 ⋯ 0.2.0
^8.0 0.1.0

Installation

composer require lastdragon-ru/lara-asp-eloquent

Iterators

Iterators are similar to Builder::chunk() but uses generators instead of \Closure that makes code more readable:

$query = \App\Models\User::query();

$query->chunk(100, function ($users) {
    foreach ($users as $user) {
        // ...
    }
});

foreach ($query->getChunkedIterator() as $user) {
    // ...
}

Iterators also support limit/offset, by default it will try to get them from the Builder, but you can also set them by hand:

$query = \App\Models\User::query()->offset(10)->limit(20);

foreach ($query->getChunkedIterator() as $user) {
    // ... 20 items from 10
}

foreach ($query->getChunkedIterator()->setOffset(0) as $user) {
    // ...20 items from 0
}

When you use the default ChunkedIterator you should not modify/delete the items while iteration or you will get unexpected results (eg missing items). If you need to modify/delete items while iteration you can use ChunkedChangeSafeIterator that specially created for this case and unlike standard chunkById() it is always safe (please see https://github.com/laravel/framework/issues/35400 for more details). But there are few limitations:

  • it is not possible to sort rows, they always will be sorted by column asc;
  • the column should not be changed while iteration or this may lead to repeating row in results;
  • the row inserted while iteration may be skipped if it has column with the value that lover than the internal pointer;
  • queries with UNION is not supported;
  • offset from Builder will not be used;

To create a change safe instance you can use:

$query = \App\Models\User::query();

foreach ($query->getChangeSafeIterator() as $user) {
    // ...
}

Mixins

\Illuminate\Database\Eloquent\Builder

Name Description
orderByKey(string $direction = 'asc') Add an ORDER BY primary_key clause to the query.
orderByKeyDesc() Alias of orderByKey('desc')
getChunkedIterator() Return ChunkedIterator instance.
getChangeSafeIteratorIterator() Return ChunkedChangeSafeIterator instance.

Upgrading

Please follow Upgrade Guide.

Contributing

Please use the main repository to report issues, send pull requests, or ask questions.

Weaver

How can I help you explore Laravel packages today?

Conversation history is not saved when not logged in.
Prompt
Add packages to context
No packages found.
hamzi/corewatch
minionfactory/raw-hydrator
hexters/coinpayment
rjcodes/rjcms
act-training/laravel-permissions-manager
alimarchal/laravel-chart-of-accounts
babenkoivan/elastic-scout-driver
mkwebdesign/filament-watchdog-v5
renatomarinho/laravel-page-speed
zedmagdy/filament-business-hours
renatovdemoura/blade-elements-ui
devgeek/beacon-admin
benjamin-rqt/data-watcher-bundle
atriumphp/atrium
sandermuller/package-boost-laravel
sandermuller/boost-skills
redaxo/core
yusufgenc/filament-api-forge
l3aro/rating-star-for-filament
leek/filament-subtenant-scope