Closed dracola closed 3 years ago
Same issue here. It occurs when using the has
, whereHas
, doesntHave
or whereDoesntHave
method, but ONLY when trying to access belongsTo
relationships. belongsToMany
, hasOne
and hasMany
relationships are all fine.
Seen in Laravel 5.5 and 5.6.
BadMethodCallException thrown with message "Method Vinelab\NeoEloquent\Query\Builder::getForeignKeyName does not exist."
Stacktrace:
#59 BadMethodCallException in /app/vendor/laravel/framework/src/Illuminate/Database/Query/Builder.php:2616
#58 Illuminate\Database\Query\Builder:__call in /app/vendor/laravel/framework/src/Illuminate/Database/Eloquent/Builder.php:1288
#57 Illuminate\Database\Eloquent\Builder:__call in /app/vendor/laravel/framework/src/Illuminate/Database/Eloquent/Relations/Relation.php:367
#56 Illuminate\Database\Eloquent\Relations\Relation:__call in /app/vendor/vinelab/neoeloquent/src/Eloquent/Concerns/QueriesRelationships.php:71
#55 Vinelab\NeoEloquent\Eloquent\Builder:has in /app/vendor/laravel/framework/src/Illuminate/Database/Eloquent/Concerns/QueriesRelationships.php:106
#54 Vinelab\NeoEloquent\Eloquent\Builder:doesntHave in /app/vendor/laravel/framework/src/Illuminate/Database/Eloquent/Model.php:1504
#53 Illuminate\Database\Eloquent\Model:__call in /app/vendor/laravel/framework/src/Illuminate/Database/Eloquent/Model.php:1516
#52 Illuminate\Database\Eloquent\Model:__callStatic in /app/app/Nodes/Carmodel.php:258
#51 App\Nodes\Carmodel:getWithoutBrand in /app/app/Http/Controllers/Nodes/CarmodelController.php:24
#50 App\Http\Controllers\Nodes\CarmodelController:index in /app/vendor/laravel/framework/src/Illuminate/Routing/Controller.php:54
#49 call_user_func_array in /app/vendor/laravel/framework/src/Illuminate/Routing/Controller.php:54
#48 Illuminate\Routing\Controller:callAction in /app/vendor/laravel/framework/src/Illuminate/Routing/ControllerDispatcher.php:45
#47 Illuminate\Routing\ControllerDispatcher:dispatch in /app/vendor/laravel/framework/src/Illuminate/Routing/Route.php:212
#46 Illuminate\Routing\Route:runController in /app/vendor/laravel/framework/src/Illuminate/Routing/Route.php:169
#45 Illuminate\Routing\Route:run in /app/vendor/laravel/framework/src/Illuminate/Routing/Router.php:659
#44 Illuminate\Routing\Router:Illuminate\Routing\{closure} in /app/vendor/laravel/framework/src/Illuminate/Routing/Pipeline.php:30
#43 Illuminate\Routing\Pipeline:Illuminate\Routing\{closure} in /app/vendor/laravel/framework/src/Illuminate/Routing/Middleware/SubstituteBindings.php:41
#42 Illuminate\Routing\Middleware\SubstituteBindings:handle in /app/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php:149
#41 Illuminate\Pipeline\Pipeline:Illuminate\Pipeline\{closure} in /app/vendor/laravel/framework/src/Illuminate/Routing/Pipeline.php:53
#40 Illuminate\Routing\Pipeline:Illuminate\Routing\{closure} in /app/vendor/laravel/framework/src/Illuminate/Foundation/Http/Middleware/VerifyCsrfToken.php:67
#39 Illuminate\Foundation\Http\Middleware\VerifyCsrfToken:handle in /app/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php:149
#38 Illuminate\Pipeline\Pipeline:Illuminate\Pipeline\{closure} in /app/vendor/laravel/framework/src/Illuminate/Routing/Pipeline.php:53
#37 Illuminate\Routing\Pipeline:Illuminate\Routing\{closure} in /app/vendor/laravel/framework/src/Illuminate/View/Middleware/ShareErrorsFromSession.php:49
#36 Illuminate\View\Middleware\ShareErrorsFromSession:handle in /app/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php:149
#35 Illuminate\Pipeline\Pipeline:Illuminate\Pipeline\{closure} in /app/vendor/laravel/framework/src/Illuminate/Routing/Pipeline.php:53
#34 Illuminate\Routing\Pipeline:Illuminate\Routing\{closure} in /app/vendor/laravel/framework/src/Illuminate/Session/Middleware/StartSession.php:63
#33 Illuminate\Session\Middleware\StartSession:handle in /app/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php:149
#32 Illuminate\Pipeline\Pipeline:Illuminate\Pipeline\{closure} in /app/vendor/laravel/framework/src/Illuminate/Routing/Pipeline.php:53
#31 Illuminate\Routing\Pipeline:Illuminate\Routing\{closure} in /app/vendor/laravel/framework/src/Illuminate/Cookie/Middleware/AddQueuedCookiesToResponse.php:37
#30 Illuminate\Cookie\Middleware\AddQueuedCookiesToResponse:handle in /app/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php:149
#29 Illuminate\Pipeline\Pipeline:Illuminate\Pipeline\{closure} in /app/vendor/laravel/framework/src/Illuminate/Routing/Pipeline.php:53
#28 Illuminate\Routing\Pipeline:Illuminate\Routing\{closure} in /app/vendor/laravel/framework/src/Illuminate/Cookie/Middleware/EncryptCookies.php:59
#27 Illuminate\Cookie\Middleware\EncryptCookies:handle in /app/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php:149
#26 Illuminate\Pipeline\Pipeline:Illuminate\Pipeline\{closure} in /app/vendor/laravel/framework/src/Illuminate/Routing/Pipeline.php:53
#25 Illuminate\Routing\Pipeline:Illuminate\Routing\{closure} in /app/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php:102
#24 Illuminate\Pipeline\Pipeline:then in /app/vendor/laravel/framework/src/Illuminate/Routing/Router.php:661
#23 Illuminate\Routing\Router:runRouteWithinStack in /app/vendor/laravel/framework/src/Illuminate/Routing/Router.php:636
#22 Illuminate\Routing\Router:runRoute in /app/vendor/laravel/framework/src/Illuminate/Routing/Router.php:602
#21 Illuminate\Routing\Router:dispatchToRoute in /app/vendor/laravel/framework/src/Illuminate/Routing/Router.php:591
#20 Illuminate\Routing\Router:dispatch in /app/vendor/laravel/framework/src/Illuminate/Foundation/Http/Kernel.php:176
#19 Illuminate\Foundation\Http\Kernel:Illuminate\Foundation\Http\{closure} in /app/vendor/laravel/framework/src/Illuminate/Routing/Pipeline.php:30
#18 Illuminate\Routing\Pipeline:Illuminate\Routing\{closure} in /app/vendor/fideloper/proxy/src/TrustProxies.php:57
#17 Fideloper\Proxy\TrustProxies:handle in /app/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php:149
#16 Illuminate\Pipeline\Pipeline:Illuminate\Pipeline\{closure} in /app/vendor/laravel/framework/src/Illuminate/Routing/Pipeline.php:53
#15 Illuminate\Routing\Pipeline:Illuminate\Routing\{closure} in /app/vendor/laravel/framework/src/Illuminate/Foundation/Http/Middleware/TransformsRequest.php:30
#14 Illuminate\Foundation\Http\Middleware\TransformsRequest:handle in /app/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php:149
#13 Illuminate\Pipeline\Pipeline:Illuminate\Pipeline\{closure} in /app/vendor/laravel/framework/src/Illuminate/Routing/Pipeline.php:53
#12 Illuminate\Routing\Pipeline:Illuminate\Routing\{closure} in /app/vendor/laravel/framework/src/Illuminate/Foundation/Http/Middleware/TransformsRequest.php:30
#11 Illuminate\Foundation\Http\Middleware\TransformsRequest:handle in /app/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php:149
#10 Illuminate\Pipeline\Pipeline:Illuminate\Pipeline\{closure} in /app/vendor/laravel/framework/src/Illuminate/Routing/Pipeline.php:53
#9 Illuminate\Routing\Pipeline:Illuminate\Routing\{closure} in /app/vendor/laravel/framework/src/Illuminate/Foundation/Http/Middleware/ValidatePostSize.php:27
#8 Illuminate\Foundation\Http\Middleware\ValidatePostSize:handle in /app/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php:149
#7 Illuminate\Pipeline\Pipeline:Illuminate\Pipeline\{closure} in /app/vendor/laravel/framework/src/Illuminate/Routing/Pipeline.php:53
#6 Illuminate\Routing\Pipeline:Illuminate\Routing\{closure} in /app/vendor/laravel/framework/src/Illuminate/Foundation/Http/Middleware/CheckForMaintenanceMode.php:46
#5 Illuminate\Foundation\Http\Middleware\CheckForMaintenanceMode:handle in /app/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php:149
#4 Illuminate\Pipeline\Pipeline:Illuminate\Pipeline\{closure} in /app/vendor/laravel/framework/src/Illuminate/Routing/Pipeline.php:53
#3 Illuminate\Routing\Pipeline:Illuminate\Routing\{closure} in /app/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php:102
#2 Illuminate\Pipeline\Pipeline:then in /app/vendor/laravel/framework/src/Illuminate/Foundation/Http/Kernel.php:151
#1 Illuminate\Foundation\Http\Kernel:sendRequestThroughRouter in /app/vendor/laravel/framework/src/Illuminate/Foundation/Http/Kernel.php:116
#0 Illuminate\Foundation\Http\Kernel:handle in /app/public/index.php:55
A fix is now available in v1.4.7 thanks to @dgerike 's PR. 👍
Please update and confirm so that we close this if fixed.
I tried and it still doesn't work. Laravel 5.7 NeoEloquent 1.4.7
Interest::doesntHave('kids')->get(); => returns empty collection Interest::has('kids')->get(); // returns empty collection
This seems to be a different issue. We got exceptions, you get empty collections.
If possible, can you check again with Laravel 5.6? Version 5.7 is not supported, yet (see https://github.com/Vinelab/NeoEloquent/issues/310).
This issue has been automatically marked as stale because it has not had recent activity. It will be closed if no further activity occurs. Thank you for your contributions.
Laravel 5.5 NeoEloquent 1.4.4
When i use where has it give me error also Model::doesntHave
@Mulkave