Call to undefined method jenssegersmongodb querybuilder create

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

Comments

After update composer , shows me "Call to undefined method Jenssegers\Mongodb\Query\Builder::getName()" after php artisan db:seed .

Laravel version: 5.4.21 - error
Laravel version: 5.4.15 - ok

I'm also getting this error in laravel 5.4.21.

It pops up when i'm using factory()->create().

A workaround is to use factory()->make() and then save all the models in a loop.
Dosen't work with factory states thought..

Quick dirty fix to get your tests to work before a proper solution is in place;

in Jenssegers\Mongodb\Eloquent\Builder.php

add

    public function getName() {
        return "mongodb";
    } 

lukashovancik, mariopacio, SenorWesley, materliu, dees040, geea-develop, leelijin, and ankur-tiwari reacted with thumbs up emojiebisbe, send0xx, kulikovalexey, and Noctis17 reacted with thumbs down emoji

The break happend from Laravel version 5.4.19 => 5.4.20. Unfortunately I couldn't find a quick sophisticated fix.

A better temporal solution (which doesn't involve modifying vendor files), is loading a macro into the builder.

This can be done in a service provider such as app\Providers\AppServiceProvider.php:

use Jenssegers\Mongodb\Eloquent\Builder;

...

public function register() {
    Builder::macro('getName', function() {
        return 'mongodb';
    });
}

arubacao, lionsdad, ebisbe, materliu, arthurkirkosa, zachflower, iaK, isneezy, renatomorenocz, mauri870, and 15 more reacted with thumbs up emojiiaK, renatomorenocz, qasimalbaqali, RomanGorbatko, and jesus6402 reacted with hooray emoji

If you are using multiple mongo connections (eg: for different models), or use a different name for the mongo connection then the above fix needs a bit of tweaking. Try the following instead (it uses the builder's model's connection, as it should):

use Jenssegers\Mongodb\Eloquent\Builder;

...

public function register() {
    Builder::macro('getName', function() {
        return $this->getModel()->getConnectionName();
    });
}

I believe this was fixed by #1300. Can anyone confirm?

In Lumen this problem still happening, I fixed it switching to version v3.3.0-alpha.

Hi have the same problem with Lumen is does anyone knows it is there a PR for this?

[2018-11-26 17:57:09] pro.ERROR: Call to undefined method Jenssegers\Mongodb\Query\Builder::compileWhereDate() {"userId":"5bfbada69dc6d67f4e0fdb4b","email":"","exception":"[object] (BadMethodCallException(code: 0): Call to undefined method Jenssegers\Mongodb\Query\Builder::compileWhereDate() at /Users/a/Downloads/fakajun/laravel/vendor/laravel/framework/src/Illuminate/Support/Traits/ForwardsCalls.php:50)
[stacktrace]
#0 /Users/a/Downloads/fakajun/laravel/vendor/laravel/framework/src/Illuminate/Database/Query/Builder.php(2917): Illuminate\Database\Query\Builder::throwBadMethodCallException('compileWhereDat...')
#1 /Users/a/Downloads/fakajun/laravel/vendor/jenssegers/mongodb/src/Jenssegers/Mongodb/Query/Builder.php(1158): Illuminate\Database\Query\Builder->__call('compileWhereDat...', Array)
#2 /Users/a/Downloads/fakajun/laravel/vendor/jenssegers/mongodb/src/Jenssegers/Mongodb/Query/Builder.php(954): Jenssegers\Mongodb\Query\Builder->__call('compileWhereDat...', Array)
#3 /Users/a/Downloads/fakajun/laravel/vendor/jenssegers/mongodb/src/Jenssegers/Mongodb/Query/Builder.php(235): Jenssegers\Mongodb\Query\Builder->compileWheres()
#4 /Users/a/Downloads/fakajun/laravel/vendor/jenssegers/mongodb/src/Jenssegers/Mongodb/Query/Builder.php(211): Jenssegers\Mongodb\Query\Builder->getFresh(Array)
#5 /Users/a/Downloads/fakajun/laravel/vendor/laravel/framework/src/Illuminate/Database/Eloquent/Builder.php(516): Jenssegers\Mongodb\Query\Builder->get(Array)
#6 /Users/a/Downloads/fakajun/laravel/vendor/laravel/framework/src/Illuminate/Database/Eloquent/Builder.php(500): Illuminate\Database\Eloquent\Builder->getModels(Array)
#7 /Users/a/Downloads/fakajun/laravel/vendor/laravel/framework/src/Illuminate/Database/Concerns/BuildsQueries.php(77): Illuminate\Database\Eloquent\Builder->get(Array)
#8 /Users/a/Downloads/fakajun/laravel/vendor/laravel/framework/src/Illuminate/Database/Eloquent/Builder.php(482): Illuminate\Database\Eloquent\Builder->first(Array)
#9 /Users/a/Downloads/fakajun/laravel/vendor/laravel/framework/src/Illuminate/Support/Traits/ForwardsCalls.php(23): Illuminate\Database\Eloquent\Builder->value('profit')
#10 /Users/a/Downloads/fakajun/laravel/vendor/laravel/framework/src/Illuminate/Database/Eloquent/Relations/Relation.php(385): Illuminate\Database\Eloquent\Relations\Relation->forwardCallTo(Object(Jenssegers\Mongodb\Eloquent\Builder), 'value', Array)
#11 /Users/a/Downloads/fakajun/laravel/app/User.php(67): Illuminate\Database\Eloquent\Relations\Relation->__call('value', Array)
#12 /Users/a/Downloads/fakajun/laravel/app/Http/Controllers/UserController.php(31): App\User->jrsr()
#13 /Users/a/Downloads/fakajun/laravel/vendor/laravel/framework/src/Illuminate/Routing/ControllerDispatcher.php(48): App\Http\Controllers\UserController->overview(Object(Illuminate\Http\Request))
#14 /Users/a/Downloads/fakajun/laravel/vendor/laravel/framework/src/Illuminate/Routing/Route.php(212): Illuminate\Routing\ControllerDispatcher->dispatch(Object(Illuminate\Routing\Route), Object(App\Http\Controllers\UserController), 'overview')
#15 /Users/a/Downloads/fakajun/laravel/vendor/laravel/framework/src/Illuminate/Routing/Route.php(169): Illuminate\Routing\Route->runController()
#16 /Users/a/Downloads/fakajun/laravel/vendor/laravel/framework/src/Illuminate/Routing/Router.php(682): Illuminate\Routing\Route->run()
#17 /Users/a/Downloads/fakajun/laravel/vendor/laravel/framework/src/Illuminate/Routing/Pipeline.php(30): Illuminate\Routing\Router->Illuminate\Routing\{closure}(Object(Illuminate\Http\Request))
#18 /Users/a/Downloads/fakajun/laravel/vendor/laravel/framework/src/Illuminate/Routing/Middleware/SubstituteBindings.php(41): Illuminate\Routing\Pipeline->Illuminate\Routing\{closure}(Object(Illuminate\Http\Request))
#19 /Users/a/Downloads/fakajun/laravel/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(151): Illuminate\Routing\Middleware\SubstituteBindings->handle(Object(Illuminate\Http\Request), Object(Closure))
#20 /Users/a/Downloads/fakajun/laravel/vendor/laravel/framework/src/Illuminate/Routing/Pipeline.php(53): Illuminate\Pipeline\Pipeline->Illuminate\Pipeline\{closure}(Object(Illuminate\Http\Request))
#21 /Users/a/Downloads/fakajun/laravel/vendor/laravel/framework/src/Illuminate/Auth/Middleware/Authenticate.php(43): Illuminate\Routing\Pipeline->Illuminate\Routing\{closure}(Object(Illuminate\Http\Request))
#22 /Users/a/Downloads/fakajun/laravel/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(151): Illuminate\Auth\Middleware\Authenticate->handle(Object(Illuminate\Http\Request), Object(Closure))
#23 /Users/a/Downloads/fakajun/laravel/vendor/laravel/framework/src/Illuminate/Routing/Pipeline.php(53): Illuminate\Pipeline\Pipeline->Illuminate\Pipeline\{closure}(Object(Illuminate\Http\Request))
#24 /Users/a/Downloads/fakajun/laravel/vendor/laravel/framework/src/Illuminate/Foundation/Http/Middleware/VerifyCsrfToken.php(75): Illuminate\Routing\Pipeline->Illuminate\Routing\{closure}(Object(Illuminate\Http\Request))
#25 /Users/a/Downloads/fakajun/laravel/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(151): Illuminate\Foundation\Http\Middleware\VerifyCsrfToken->handle(Object(Illuminate\Http\Request), Object(Closure))
#26 /Users/a/Downloads/fakajun/laravel/vendor/laravel/framework/src/Illuminate/Routing/Pipeline.php(53): Illuminate\Pipeline\Pipeline->Illuminate\Pipeline\{closure}(Object(Illuminate\Http\Request))
#27 /Users/a/Downloads/fakajun/laravel/vendor/laravel/framework/src/Illuminate/View/Middleware/ShareErrorsFromSession.php(49): Illuminate\Routing\Pipeline->Illuminate\Routing\{closure}(Object(Illuminate\Http\Request))
#28 /Users/a/Downloads/fakajun/laravel/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(151): Illuminate\View\Middleware\ShareErrorsFromSession->handle(Object(Illuminate\Http\Request), Object(Closure))
#29 /Users/a/Downloads/fakajun/laravel/vendor/laravel/framework/src/Illuminate/Routing/Pipeline.php(53): Illuminate\Pipeline\Pipeline->Illuminate\Pipeline\{closure}(Object(Illuminate\Http\Request))
#30 /Users/a/Downloads/fakajun/laravel/vendor/laravel/framework/src/Illuminate/Session/Middleware/StartSession.php(63): Illuminate\Routing\Pipeline->Illuminate\Routing\{closure}(Object(Illuminate\Http\Request))
#31 /Users/a/Downloads/fakajun/laravel/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(151): Illuminate\Session\Middleware\StartSession->handle(Object(Illuminate\Http\Request), Object(Closure))
#32 /Users/a/Downloads/fakajun/laravel/vendor/laravel/framework/src/Illuminate/Routing/Pipeline.php(53): Illuminate\Pipeline\Pipeline->Illuminate\Pipeline\{closure}(Object(Illuminate\Http\Request))
#33 /Users/a/Downloads/fakajun/laravel/vendor/laravel/framework/src/Illuminate/Cookie/Middleware/AddQueuedCookiesToResponse.php(37): Illuminate\Routing\Pipeline->Illuminate\Routing\{closure}(Object(Illuminate\Http\Request))
#34 /Users/a/Downloads/fakajun/laravel/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(151): Illuminate\Cookie\Middleware\AddQueuedCookiesToResponse->handle(Object(Illuminate\Http\Request), Object(Closure))
#35 /Users/a/Downloads/fakajun/laravel/vendor/laravel/framework/src/Illuminate/Routing/Pipeline.php(53): Illuminate\Pipeline\Pipeline->Illuminate\Pipeline\{closure}(Object(Illuminate\Http\Request))
#36 /Users/a/Downloads/fakajun/laravel/vendor/laravel/framework/src/Illuminate/Cookie/Middleware/EncryptCookies.php(66): Illuminate\Routing\Pipeline->Illuminate\Routing\{closure}(Object(Illuminate\Http\Request))
#37 /Users/a/Downloads/fakajun/laravel/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(151): Illuminate\Cookie\Middleware\EncryptCookies->handle(Object(Illuminate\Http\Request), Object(Closure))
#38 /Users/a/Downloads/fakajun/laravel/vendor/laravel/framework/src/Illuminate/Routing/Pipeline.php(53): Illuminate\Pipeline\Pipeline->Illuminate\Pipeline\{closure}(Object(Illuminate\Http\Request))
#39 /Users/a/Downloads/fakajun/laravel/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(104): Illuminate\Routing\Pipeline->Illuminate\Routing\{closure}(Object(Illuminate\Http\Request))
#40 /Users/a/Downloads/fakajun/laravel/vendor/laravel/framework/src/Illuminate/Routing/Router.php(684): Illuminate\Pipeline\Pipeline->then(Object(Closure))
#41 /Users/a/Downloads/fakajun/laravel/vendor/laravel/framework/src/Illuminate/Routing/Router.php(659): Illuminate\Routing\Router->runRouteWithinStack(Object(Illuminate\Routing\Route), Object(Illuminate\Http\Request))
#42 /Users/a/Downloads/fakajun/laravel/vendor/laravel/framework/src/Illuminate/Routing/Router.php(625): Illuminate\Routing\Router->runRoute(Object(Illuminate\Http\Request), Object(Illuminate\Routing\Route))
#43 /Users/a/Downloads/fakajun/laravel/vendor/laravel/framework/src/Illuminate/Routing/Router.php(614): Illuminate\Routing\Router->dispatchToRoute(Object(Illuminate\Http\Request))
#44 /Users/a/Downloads/fakajun/laravel/vendor/laravel/framework/src/Illuminate/Foundation/Http/Kernel.php(176): Illuminate\Routing\Router->dispatch(Object(Illuminate\Http\Request))
#45 /Users/a/Downloads/fakajun/laravel/vendor/laravel/framework/src/Illuminate/Routing/Pipeline.php(30): Illuminate\Foundation\Http\Kernel->Illuminate\Foundation\Http\{closure}(Object(Illuminate\Http\Request))
#46 /Users/a/Downloads/fakajun/laravel/vendor/fideloper/proxy/src/TrustProxies.php(57): Illuminate\Routing\Pipeline->Illuminate\Routing\{closure}(Object(Illuminate\Http\Request))
#47 /Users/a/Downloads/fakajun/laravel/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(151): Fideloper\Proxy\TrustProxies->handle(Object(Illuminate\Http\Request), Object(Closure))
#48 /Users/a/Downloads/fakajun/laravel/vendor/laravel/framework/src/Illuminate/Routing/Pipeline.php(53): Illuminate\Pipeline\Pipeline->Illuminate\Pipeline\{closure}(Object(Illuminate\Http\Request))
#49 /Users/a/Downloads/fakajun/laravel/vendor/laravel/framework/src/Illuminate/Foundation/Http/Middleware/TransformsRequest.php(31): Illuminate\Routing\Pipeline->Illuminate\Routing\{closure}(Object(Illuminate\Http\Request))
#50 /Users/a/Downloads/fakajun/laravel/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(151): Illuminate\Foundation\Http\Middleware\TransformsRequest->handle(Object(Illuminate\Http\Request), Object(Closure))
#51 /Users/a/Downloads/fakajun/laravel/vendor/laravel/framework/src/Illuminate/Routing/Pipeline.php(53): Illuminate\Pipeline\Pipeline->Illuminate\Pipeline\{closure}(Object(Illuminate\Http\Request))
#52 /Users/a/Downloads/fakajun/laravel/vendor/laravel/framework/src/Illuminate/Foundation/Http/Middleware/TransformsRequest.php(31): Illuminate\Routing\Pipeline->Illuminate\Routing\{closure}(Object(Illuminate\Http\Request))
#53 /Users/a/Downloads/fakajun/laravel/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(151): Illuminate\Foundation\Http\Middleware\TransformsRequest->handle(Object(Illuminate\Http\Request), Object(Closure))
#54 /Users/a/Downloads/fakajun/laravel/vendor/laravel/framework/src/Illuminate/Routing/Pipeline.php(53): Illuminate\Pipeline\Pipeline->Illuminate\Pipeline\{closure}(Object(Illuminate\Http\Request))
#55 /Users/a/Downloads/fakajun/laravel/vendor/laravel/framework/src/Illuminate/Foundation/Http/Middleware/ValidatePostSize.php(27): Illuminate\Routing\Pipeline->Illuminate\Routing\{closure}(Object(Illuminate\Http\Request))
#56 /Users/a/Downloads/fakajun/laravel/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(151): Illuminate\Foundation\Http\Middleware\ValidatePostSize->handle(Object(Illuminate\Http\Request), Object(Closure))
#57 /Users/a/Downloads/fakajun/laravel/vendor/laravel/framework/src/Illuminate/Routing/Pipeline.php(53): Illuminate\Pipeline\Pipeline->Illuminate\Pipeline\{closure}(Object(Illuminate\Http\Request))
#58 /Users/a/Downloads/fakajun/laravel/vendor/laravel/framework/src/Illuminate/Foundation/Http/Middleware/CheckForMaintenanceMode.php(62): Illuminate\Routing\Pipeline->Illuminate\Routing\{closure}(Object(Illuminate\Http\Request))
#59 /Users/a/Downloads/fakajun/laravel/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(151): Illuminate\Foundation\Http\Middleware\CheckForMaintenanceMode->handle(Object(Illuminate\Http\Request), Object(Closure))
#60 /Users/a/Downloads/fakajun/laravel/vendor/laravel/framework/src/Illuminate/Routing/Pipeline.php(53): Illuminate\Pipeline\Pipeline->Illuminate\Pipeline\{closure}(Object(Illuminate\Http\Request))
#61 /Users/a/Downloads/fakajun/laravel/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(104): Illuminate\Routing\Pipeline->Illuminate\Routing\{closure}(Object(Illuminate\Http\Request))
#62 /Users/a/Downloads/fakajun/laravel/vendor/laravel/framework/src/Illuminate/Foundation/Http/Kernel.php(151): Illuminate\Pipeline\Pipeline->then(Object(Closure))
#63 /Users/a/Downloads/fakajun/laravel/vendor/laravel/framework/src/Illuminate/Foundation/Http/Kernel.php(116): Illuminate\Foundation\Http\Kernel->sendRequestThroughRouter(Object(Illuminate\Http\Request))
#64 /Users/a/Downloads/fakajun/laravel/public/index.php(55): Illuminate\Foundation\Http\Kernel->handle(Object(Illuminate\Http\Request))
#65 /Users/a/Downloads/fakajun/laravel/server.php(21): require_once('/Users/a/Downlo...')
#66 {main}
"}