Skip to content

model "belongsToMany" do not use cache #473

@echo-LuGuang

Description

@echo-LuGuang

Describe the bug
model "belongsToMany" do not use cache
Eloquent

<?php

namespace App\Models\Admin;

use Illuminate\Database\Eloquent\Relations\BelongsToMany;
use Illuminate\Foundation\Auth\User as Authenticatable;
use Tymon\JWTAuth\Contracts\JWTSubject;

/**
 * @mixin IdeHelperAdminUser
 */
final class AdminUser extends Authenticatable implements JWTSubject
{
    /**
     * 关联角色
     */
    public function roles(): BelongsToMany
    {
        return $this->belongsToMany(AdminRole::class, 'admin_user_roles');
    }

    public function getJWTIdentifier()
    {
        return $this->getKey();
    }

    public function getJWTCustomClaims(): array
    {
        return [];
    }
}



<?php

namespace App\Models\Admin;

use App\Models\BaseModel;
use GeneaLabs\LaravelModelCaching\Traits\Cachable;
use Illuminate\Database\Eloquent\Relations\BelongsToMany;

/**
 * @mixin IdeHelperAdminRole
 */
final class AdminRole extends BaseModel
{
    use Cachable;
}
dump(auth()->user()->roles);

Stack Trace
The full stack trace from your log file.

Environment

  • PHP: [8.3.10]
  • OS: [Macos 15.0.1]
  • Laravel: [11.29.0]
  • Model Caching: [11.0]

Activity

self-assigned this
on Apr 1, 2025
akyrey

akyrey commented on May 27, 2025

@akyrey

I was investing this issue:
the problem here is that User model doesn't use the Cachable trait (as adviced in the docs) and so ModelCaching trait method newBelongsToMany doesn't exist and isn't used.
The belongsToMany caching works correcly if the parent model uses the Cachable trait

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

Labels

Projects

No projects

Milestone

No milestone

Relationships

None yet

    Development

    No branches or pull requests

      Participants

      @mikebronner@akyrey@echo-LuGuang

      Issue actions

        model "belongsToMany" do not use cache · Issue #473 · mikebronner/laravel-model-caching