GithubHelp home page GithubHelp logo

Comments (2)

denydias avatar denydias commented on June 16, 2024 2

Well, after some extensive investigation, I could not find what's causing lots of N+1 when using Traits\HasRoleAndPermission->getRoles() after PR #171. For now I'll just accept the fact my code skills are rust or my knowledge is not up to a better solution (or both).

As a workaround, I'm now just overriding getRoles() in the user model like this...

namespace App\Models;

use Illuminate\Database\Eloquent\Collection;
use Illuminate\Foundation\Auth\User as Authenticatable;
use jeremykenedy\LaravelRoles\Traits\HasRoleAndPermission;

class User extends Authenticatable
{
    use HasRoleAndPermission;
    ...
    /**
     * Overrides jeremykenedy\LaravelRoles\Traits\HasRoleAndPermission->getRoles()
     * to avoid N+1 introduced by PR #171.
     *
     * @see https://github.com/jeremykenedy/laravel-roles/issues/179
     * @see https://github.com/jeremykenedy/laravel-roles/pull/171
     *
     * @return Collection|null
     */
    public function getRoles(): ?Collection
    {
        return ! $this->roles ? $this->roles = $this->roles()->get() : $this->roles;
    }
}

...then N+1 are gone. That WFM now.

As I couldn't find the root causes in the package or in my code, I'll just leave this issue opened so others may have a reference and maybe provide a better solution.

from laravel-roles.

jeremykenedy avatar jeremykenedy commented on June 16, 2024

I believe this was solved in a recent update. If it occurs again please let me know and I will re-open the issue. Thank you

from laravel-roles.

Related Issues (20)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.