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

Open
wants to merge 4 commits into
base: 12.x
Choose a base branch
from

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

Co-authored-by: Choraimy Kroonstuiver <3661474+axlon@users.noreply.github.com>

See laravel#56078 (comment)
@shaedrich
Copy link
Contributor Author

@axlon Right 😲 Thanks for pointing that out 👍🏻

I added a fix via efffda0

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.

2 participants