Skip to content

[12.x] Cache isSoftDeletable(), isPrunable(), and isMassPrunable() directly in model #56078

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged

Conversation

shaedrich
Copy link
Contributor

Classes rarely change at runtime, however, checking their dependencies every time we need them—sometimes even recursively—can be expensive. So, caching them makes sense.

Follow-up to #56060

as suggested in #56069 (comment)

@shaedrich
Copy link
Contributor Author

I'm not quite sure why the tests fail all with a sudden despite not much being changed 🤔

@axlon
Copy link
Contributor

axlon commented Jun 20, 2025

@shaedrich not sure if this is why the tests are failing, but this doesn't work. All models will now share the same cache:

class ModelA extends Model
{
    use SoftDeletes;
}

class ModelB extends Model
{
}

dump(
    ModelA::isSoftDeletable(),
    ModelB::isSoftDeletable(),
);

// prints: true true

@shaedrich
Copy link
Contributor Author

@axlon Right 😲 Thanks for pointing that out 👍🏻

I added a fix via efffda0

@taylorotwell taylorotwell merged commit 1cf7324 into laravel:12.x Jun 23, 2025
60 checks passed
taylorotwell added a commit to illuminate/database that referenced this pull request Jun 24, 2025
…rectly in model (#56078)

* Do caching of isSoftDeletable(), isPrunable(), and isMassPrunable() directly in the model

* StyleCI

* Change cached boolean to map with late static binding

Co-authored-by: Choraimy Kroonstuiver <[email protected]>

See laravel/framework#56078 (comment)

* formatting

---------

Co-authored-by: Taylor Otwell <[email protected]>
@shaedrich shaedrich deleted the soft-deletes-cached-in-model-only branch June 24, 2025 07:07
mohammad-fouladgar pushed a commit to mohammad-fouladgar/framework that referenced this pull request Jul 22, 2025
…rectly in model (laravel#56078)

* Do caching of isSoftDeletable(), isPrunable(), and isMassPrunable() directly in the model

* StyleCI

* Change cached boolean to map with late static binding

Co-authored-by: Choraimy Kroonstuiver <[email protected]>

See laravel#56078 (comment)

* formatting

---------

Co-authored-by: Taylor Otwell <[email protected]>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants