Skip to content
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

Trait method newEloquentBuilder has not been applied, because there are collisions #366

Open
LiamAird opened this issue Sep 2, 2020 · 11 comments
Assignees

Comments

@LiamAird
Copy link

LiamAird commented Sep 2, 2020

Describe the bug
When using this package, together with other packages, that also use the newEloquentBuilder, it will fail, since two cannot use the same method two redo the eloquentBuilder, I suppose.

use GeneaLabs\LaravelModelCaching\Traits\Cachable;
use Kalnoy\Nestedset\NodeTrait;

class City extends Model
{
    use Cachable, NodeTrait;
}

Eloquent Query
Please provide the complete eloquent query that caused the bug, for example:

Using the NodeTrait from Kalnoy, as mentioned above.

Route::get('tree', function() {
    App\Models\City::fixTree();
});

Stack Trace
The full stack trace from your log file.

[2020-09-02 07:35:18] local.ERROR: Trait method newEloquentBuilder has not been applied, because there are collisions with other trait methods on App\Models\City {"exception":"[object] (Symfony\\Component\\ErrorHandler\\Error\\FatalError(code: 0): Trait method newEloquentBuilder has not been applied, because there are collisions with other trait methods on App\\Models\\City at /home/vagrant/finddet/app/Models/City.php:9)
[stacktrace]
#0 /home/vagrant/finddet/vendor/laravel/framework/src/Illuminate/Foundation/Bootstrap/HandleExceptions.php(143): Symfony\\Component\\ErrorHandler\\Error\\FatalError->__construct()
#1 /home/vagrant/finddet/vendor/laravel/framework/src/Illuminate/Foundation/Bootstrap/HandleExceptions.php(130): Illuminate\\Foundation\\Bootstrap\\HandleExceptions->fatalErrorFromPhpError()
#2 /home/vagrant/finddet/vendor/laravel/framework/src/Illuminate/Foundation/Bootstrap/HandleExceptions.php(0): Illuminate\\Foundation\\Bootstrap\\HandleExceptions->handleShutdown()
#3 /home/vagrant/finddet/vendor/composer/ClassLoader.php(444): ()
#4 /home/vagrant/finddet/vendor/composer/ClassLoader.php(322): Composer\\Autoload\\includeFile()
#5 /home/vagrant/finddet/routes/web.php(111): Composer\\Autoload\\ClassLoader->loadClass()
#6 /home/vagrant/finddet/routes/web.php(111): spl_autoload_call()
#7 /home/vagrant/finddet/vendor/laravel/framework/src/Illuminate/Routing/Route.php(225): Illuminate\\Routing\\RouteFileRegistrar->{closure:/home/vagrant/finddet/routes/web.php:110-112}()
#8 /home/vagrant/finddet/vendor/laravel/framework/src/Illuminate/Routing/Route.php(199): Illuminate\\Routing\\Route->runCallable()
#9 /home/vagrant/finddet/vendor/laravel/framework/src/Illuminate/Routing/Router.php(685): Illuminate\\Routing\\Route->run()
#10 /home/vagrant/finddet/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(128): Illuminate\\Routing\\Router->Illuminate\\Routing\\{closure:/home/vagrant/finddet/vendor/laravel/framework/src/Illuminate/Routing/Router.php:683-687}()
#11 /home/vagrant/finddet/vendor/laravel/framework/src/Illuminate/Routing/Middleware/SubstituteBindings.php(41): Illuminate\\Routing\\Pipeline->Illuminate\\Pipeline\\{closure:/home/vagrant/finddet/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php:126-132}()
#12 /home/vagrant/finddet/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(167): Illuminate\\Routing\\Middleware\\SubstituteBindings->handle()
#13 /home/vagrant/finddet/vendor/laravel/framework/src/Illuminate/Foundation/Http/Middleware/VerifyCsrfToken.php(77): Illuminate\\Routing\\Pipeline->Illuminate\\Pipeline\\{closure:/home/vagrant/finddet/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php:143-174}()
#14 /home/vagrant/finddet/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(167): App\\Http\\Middleware\\VerifyCsrfToken->handle()
#15 /home/vagrant/finddet/vendor/laravel/framework/src/Illuminate/View/Middleware/ShareErrorsFromSession.php(49): Illuminate\\Routing\\Pipeline->Illuminate\\Pipeline\\{closure:/home/vagrant/finddet/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php:143-174}()
#16 /home/vagrant/finddet/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(167): Illuminate\\View\\Middleware\\ShareErrorsFromSession->handle()
#17 /home/vagrant/finddet/vendor/laravel/framework/src/Illuminate/Session/Middleware/StartSession.php(116): Illuminate\\Routing\\Pipeline->Illuminate\\Pipeline\\{closure:/home/vagrant/finddet/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php:143-174}()
#18 /home/vagrant/finddet/vendor/laravel/framework/src/Illuminate/Session/Middleware/StartSession.php(62): Illuminate\\Session\\Middleware\\StartSession->handleStatefulRequest()
#19 /home/vagrant/finddet/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(167): Illuminate\\Session\\Middleware\\StartSession->handle()
#20 /home/vagrant/finddet/vendor/laravel/framework/src/Illuminate/Cookie/Middleware/AddQueuedCookiesToResponse.php(37): Illuminate\\Routing\\Pipeline->Illuminate\\Pipeline\\{closure:/home/vagrant/finddet/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php:143-174}()
#21 /home/vagrant/finddet/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(167): Illuminate\\Cookie\\Middleware\\AddQueuedCookiesToResponse->handle()
#22 /home/vagrant/finddet/vendor/laravel/framework/src/Illuminate/Cookie/Middleware/EncryptCookies.php(67): Illuminate\\Routing\\Pipeline->Illuminate\\Pipeline\\{closure:/home/vagrant/finddet/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php:143-174}()
#23 /home/vagrant/finddet/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(167): App\\Http\\Middleware\\EncryptCookies->handle()
#24 /home/vagrant/finddet/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(103): Illuminate\\Routing\\Pipeline->Illuminate\\Pipeline\\{closure:/home/vagrant/finddet/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php:143-174}()
#25 /home/vagrant/finddet/vendor/laravel/framework/src/Illuminate/Routing/Router.php(687): Illuminate\\Routing\\Pipeline->then()
#26 /home/vagrant/finddet/vendor/laravel/framework/src/Illuminate/Routing/Router.php(662): Illuminate\\Routing\\Router->runRouteWithinStack()
#27 /home/vagrant/finddet/vendor/laravel/framework/src/Illuminate/Routing/Router.php(628): Illuminate\\Routing\\Router->runRoute()
#28 /home/vagrant/finddet/vendor/laravel/framework/src/Illuminate/Routing/Router.php(617): Illuminate\\Routing\\Router->dispatchToRoute()
#29 /home/vagrant/finddet/vendor/laravel/framework/src/Illuminate/Foundation/Http/Kernel.php(165): Illuminate\\Routing\\Router->dispatch()
#30 /home/vagrant/finddet/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(128): App\\Http\\Kernel->Illuminate\\Foundation\\Http\\{closure:/home/vagrant/finddet/vendor/laravel/framework/src/Illuminate/Foundation/Http/Kernel.php:162-166}()
#31 /home/vagrant/finddet/vendor/beyondcode/laravel-query-detector/src/QueryDetectorMiddleware.php(33): Illuminate\\Routing\\Pipeline->Illuminate\\Pipeline\\{closure:/home/vagrant/finddet/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php:126-132}()
#32 /home/vagrant/finddet/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(167): BeyondCode\\QueryDetector\\QueryDetectorMiddleware->handle()
#33 /home/vagrant/finddet/vendor/barryvdh/laravel-debugbar/src/Middleware/InjectDebugbar.php(65): Illuminate\\Routing\\Pipeline->Illuminate\\Pipeline\\{closure:/home/vagrant/finddet/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php:143-174}()
#34 /home/vagrant/finddet/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(167): Barryvdh\\Debugbar\\Middleware\\InjectDebugbar->handle()
#35 /home/vagrant/finddet/vendor/laravel/framework/src/Illuminate/Foundation/Http/Middleware/TransformsRequest.php(21): Illuminate\\Routing\\Pipeline->Illuminate\\Pipeline\\{closure:/home/vagrant/finddet/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php:143-174}()
#36 /home/vagrant/finddet/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(167): Illuminate\\Foundation\\Http\\Middleware\\ConvertEmptyStringsToNull->handle()
#37 /home/vagrant/finddet/vendor/laravel/framework/src/Illuminate/Foundation/Http/Middleware/TransformsRequest.php(21): Illuminate\\Routing\\Pipeline->Illuminate\\Pipeline\\{closure:/home/vagrant/finddet/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php:143-174}()
#38 /home/vagrant/finddet/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(167): App\\Http\\Middleware\\TrimStrings->handle()
#39 /home/vagrant/finddet/vendor/laravel/framework/src/Illuminate/Foundation/Http/Middleware/ValidatePostSize.php(27): Illuminate\\Routing\\Pipeline->Illuminate\\Pipeline\\{closure:/home/vagrant/finddet/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php:143-174}()
#40 /home/vagrant/finddet/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(167): Illuminate\\Foundation\\Http\\Middleware\\ValidatePostSize->handle()
#41 /home/vagrant/finddet/vendor/laravel/framework/src/Illuminate/Foundation/Http/Middleware/CheckForMaintenanceMode.php(63): Illuminate\\Routing\\Pipeline->Illuminate\\Pipeline\\{closure:/home/vagrant/finddet/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php:143-174}()
#42 /home/vagrant/finddet/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(167): App\\Http\\Middleware\\CheckForMaintenanceMode->handle()
#43 /home/vagrant/finddet/vendor/fruitcake/laravel-cors/src/HandleCors.php(37): Illuminate\\Routing\\Pipeline->Illuminate\\Pipeline\\{closure:/home/vagrant/finddet/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php:143-174}()
#44 /home/vagrant/finddet/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(167): Fruitcake\\Cors\\HandleCors->handle()
#45 /home/vagrant/finddet/vendor/fideloper/proxy/src/TrustProxies.php(57): Illuminate\\Routing\\Pipeline->Illuminate\\Pipeline\\{closure:/home/vagrant/finddet/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php:143-174}()
#46 /home/vagrant/finddet/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(167): App\\Http\\Middleware\\TrustProxies->handle()
#47 /home/vagrant/finddet/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(103): Illuminate\\Routing\\Pipeline->Illuminate\\Pipeline\\{closure:/home/vagrant/finddet/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php:143-174}()
#48 /home/vagrant/finddet/vendor/laravel/framework/src/Illuminate/Foundation/Http/Kernel.php(140): Illuminate\\Routing\\Pipeline->then()
#49 /home/vagrant/finddet/vendor/laravel/framework/src/Illuminate/Foundation/Http/Kernel.php(109): App\\Http\\Kernel->sendRequestThroughRouter()
#50 /home/vagrant/finddet/public/index.php(55): App\\Http\\Kernel->handle()
#51 /home/vagrant/finddet/public/index.php(0): {main}()
#52 {main}
"} 

Environment

  • PHP: 7.4.6
  • OS: 9.11.3-1ubuntu1.13-Ubuntu - Vagrant Homebox
  • Laravel: 7.26.1
  • Model Caching: 0.10.1

Additional context

This seems to be a general issue, when using these packages, that uses the same general commands.
Presented in this issue: #137
lazychaser/laravel-nestedset#360

@mikebronner
Copy link
Owner

Hi @LiamAird, thank you for submitting a new issue with all the relevant details. I will see if there is something that can be done to help with this, but unfortunately so far it has been very difficult for multiple packages that change the behavior of newEloquentBuilder to co-exist.

@mikebronner mikebronner self-assigned this Sep 2, 2020
@LiamAird
Copy link
Author

LiamAird commented Sep 4, 2020

It seems that the general written work-around is to create a new trait, that implements this newEloquentBuilder trait - so that it is namespaced differently and therefore will not collide.

In my opinion this is not something that the general user should do, to make packages work - so if you can find a way to make it work, I'd be forever grateful! :)
If not, we will have to find a way to make a trait ourselves and have it written up in the guides as a "work-around" fix to use this package with others, that utilizes the same methods.

@mikebronner
Copy link
Owner

@LiamAird I may have a solution for this, working on it now.

@mikebronner
Copy link
Owner

@LiamAird Could you give release 0.10.2 a try and let me know if that fixes the issue? Please see the readme section towards the top regarding conflicting packages as how to implement it. Thanks!

@LiamAird
Copy link
Author

@mikebronner Any progress on this, since the latest change did not work as expected.
Also seems like the latest conversation got deleted.

@mikebronner
Copy link
Owner

@LiamAird I am still working toward a full solution. I noticed after publishing 0.10.2 that it wasn't working as expected, and will hopefully have a solution in the near future.

@mikebronner mikebronner reopened this Sep 22, 2020
@C10ne
Copy link

C10ne commented Oct 15, 2020

Any information on this? It's also blocking me to upgrade for some time.

@mikebronner
Copy link
Owner

@C10ne Can you install 0.10.1 in the meantime?

@mefenlon
Copy link

mefenlon commented Feb 8, 2021

Is there any update on this? I am still having the collision issue on version 0.11.1

@mikebronner
Copy link
Owner

mikebronner commented Feb 8, 2021

@mefenlon Hi, sorry, I have not been able to get to working on a solution for this yet due to a very chaotic past several months on my end.

@mefenlon
Copy link

mefenlon commented Feb 8, 2021 via email

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

No branches or pull requests

4 participants