winter icon indicating copy to clipboard operation
winter copied to clipboard

Undefined property: Builder::$concats

Open Pasquale-CS opened this issue 7 months ago • 2 comments

Winter CMS Build

1.2

PHP Version

8.3

Database engine

MySQL/MariaDB

Plugins installed

No response

Issue description

On file "vendor/winter/storm/src/Database/Query/Grammars/Concerns/SelectConcatenations.php" there is a bug:

Undefined property: Builder::$concats

on line 24

Steps to replicate

LOG.error: ErrorException: Undefined property: Awobaz\Compoships\Database\Query\Builder::$concats in /var/www/html/vendor/winter/storm/src/Database/Query/Grammars/Concerns/SelectConcatenations.php:24
Stack trace:
#0 /var/www/html/vendor/laravel/framework/src/Illuminate/Foundation/Bootstrap/HandleExceptions.php(272): Illuminate\Foundation\Bootstrap\HandleExceptions->handleError()
#1 /var/www/html/vendor/winter/storm/src/Database/Query/Grammars/Concerns/SelectConcatenations.php(24): Illuminate\Foundation\Bootstrap\HandleExceptions->Illuminate\Foundation\Bootstrap\{closure}()
#2 /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Query/Grammars/Grammar.php(101): Winter\Storm\Database\Query\Grammars\MySqlGrammar->compileColumns()
#3 /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Query/Grammars/Grammar.php(75): Illuminate\Database\Query\Grammars\Grammar->compileComponents()
#4 /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Query/Grammars/Grammar.php(535): Illuminate\Database\Query\Grammars\Grammar->compileSelect()
#5 /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Query/Grammars/Grammar.php(222): Illuminate\Database\Query\Grammars\Grammar->whereExists()
#6 [internal function]: Illuminate\Database\Query\Grammars\Grammar->Illuminate\Database\Query\Grammars\{closure}()
#7 /var/www/html/vendor/laravel/framework/src/Illuminate/Collections/Arr.php(560): array_map()
#8 /var/www/html/vendor/laravel/framework/src/Illuminate/Collections/Collection.php(768): Illuminate\Support\Arr::map()
#9 /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Query/Grammars/Grammar.php(221): Illuminate\Support\Collection->map()
#10 /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Query/Grammars/Grammar.php(206): Illuminate\Database\Query\Grammars\Grammar->compileWheresToArray()
#11 /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Query/Grammars/Grammar.php(101): Illuminate\Database\Query\Grammars\Grammar->compileWheres()
#12 /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Query/Grammars/Grammar.php(75): Illuminate\Database\Query\Grammars\Grammar->compileComponents()
#13 /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Query/Grammars/Grammar.php(535): Illuminate\Database\Query\Grammars\Grammar->compileSelect()
#14 /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Query/Grammars/Grammar.php(222): Illuminate\Database\Query\Grammars\Grammar->whereExists()
#15 [internal function]: Illuminate\Database\Query\Grammars\Grammar->Illuminate\Database\Query\Grammars\{closure}()
#16 /var/www/html/vendor/laravel/framework/src/Illuminate/Collections/Arr.php(560): array_map()
#17 /var/www/html/vendor/laravel/framework/src/Illuminate/Collections/Collection.php(768): Illuminate\Support\Arr::map()
#18 /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Query/Grammars/Grammar.php(221): Illuminate\Support\Collection->map()
#19 /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Query/Grammars/Grammar.php(206): Illuminate\Database\Query\Grammars\Grammar->compileWheresToArray()
#20 /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Query/Grammars/Grammar.php(101): Illuminate\Database\Query\Grammars\Grammar->compileWheres()
#21 /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Query/Grammars/Grammar.php(75): Illuminate\Database\Query\Grammars\Grammar->compileComponents()
#22 /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Query/Grammars/Grammar.php(535): Illuminate\Database\Query\Grammars\Grammar->compileSelect()
#23 /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Query/Grammars/Grammar.php(222): Illuminate\Database\Query\Grammars\Grammar->whereExists()
#24 [internal function]: Illuminate\Database\Query\Grammars\Grammar->Illuminate\Database\Query\Grammars\{closure}()
#25 /var/www/html/vendor/laravel/framework/src/Illuminate/Collections/Arr.php(560): array_map()
#26 /var/www/html/vendor/laravel/framework/src/Illuminate/Collections/Collection.php(768): Illuminate\Support\Arr::map()
#27 /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Query/Grammars/Grammar.php(221): Illuminate\Support\Collection->map()
#28 /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Query/Grammars/Grammar.php(206): Illuminate\Database\Query\Grammars\Grammar->compileWheresToArray()
#29 /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Query/Grammars/Grammar.php(101): Illuminate\Database\Query\Grammars\Grammar->compileWheres()
#30 /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Query/Grammars/Grammar.php(75): Illuminate\Database\Query\Grammars\Grammar->compileComponents()
#31 /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Query/Builder.php(2604): Illuminate\Database\Query\Grammars\Grammar->compileSelect()
#32 /var/www/html/vendor/winter/storm/src/Database/MemoryCache.php(138): Illuminate\Database\Query\Builder->toSql()
#33 /var/www/html/vendor/winter/storm/src/Database/MemoryCache.php(55): Winter\Storm\Database\MemoryCache->hash()
#34 /var/www/html/vendor/winter/storm/src/Database/QueryBuilder.php(122): Winter\Storm\Database\MemoryCache->has()
#35 /var/www/html/vendor/winter/storm/src/Database/QueryBuilder.php(102): Winter\Storm\Database\QueryBuilder->getDuplicateCached()
#36 /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Eloquent/Builder.php(710): Winter\Storm\Database\QueryBuilder->get()
#37 /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Eloquent/Builder.php(694): Illuminate\Database\Eloquent\Builder->getModels()
#38 /var/www/html/plugins/pcs/cyberlegalcompliance/services/ComplianceService.php(38): Illuminate\Database\Eloquent\Builder->get()
#39 /var/www/html/plugins/pcs/cyberlegalcompliance/services/ComplianceService.php(78): Pcs\CyberLegalCompliance\Services\ComplianceService->getAllCompliance()
#40 /var/www/html/storage/cms/cache/themes/cyber-legal-compliance/pages/legal-compliance.htm.php(8): Pcs\CyberLegalCompliance\Services\ComplianceService->getAllComplianceGrouped()
#41 /var/www/html/modules/cms/classes/Controller.php(513): Cms6827ab6993bb7398381011_48be689e05d3b1f36e0a879232d19ad1Class->onStart()
#42 /var/www/html/modules/cms/classes/Controller.php(407): Cms\Classes\Controller->execPageCycle()
#43 /var/www/html/modules/cms/classes/Controller.php(220): Cms\Classes\Controller->runPage()
#44 /var/www/html/modules/cms/classes/CmsController.php(41): Cms\Classes\Controller->run()
#45 /var/www/html/vendor/laravel/framework/src/Illuminate/Routing/Controller.php(54): Cms\Classes\CmsController->run()
#46 /var/www/html/vendor/laravel/framework/src/Illuminate/Routing/ControllerDispatcher.php(43): Illuminate\Routing\Controller->callAction()
#47 /var/www/html/vendor/laravel/framework/src/Illuminate/Routing/Route.php(259): Illuminate\Routing\ControllerDispatcher->dispatch()
#48 /var/www/html/vendor/laravel/framework/src/Illuminate/Routing/Route.php(205): Illuminate\Routing\Route->runController()
#49 /var/www/html/vendor/laravel/framework/src/Illuminate/Routing/Router.php(798): Illuminate\Routing\Route->run()
#50 /var/www/html/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(141): Illuminate\Routing\Router->Illuminate\Routing\{closure}()
#51 /var/www/html/vendor/laravel/framework/src/Illuminate/Routing/Middleware/SubstituteBindings.php(50): Illuminate\Pipeline\Pipeline->Illuminate\Pipeline\{closure}()
#52 /var/www/html/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(180): Illuminate\Routing\Middleware\SubstituteBindings->handle()
#53 /var/www/html/vendor/laravel/framework/src/Illuminate/View/Middleware/ShareErrorsFromSession.php(49): Illuminate\Pipeline\Pipeline->Illuminate\Pipeline\{closure}()
#54 /var/www/html/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(180): Illuminate\View\Middleware\ShareErrorsFromSession->handle()
#55 /var/www/html/vendor/laravel/framework/src/Illuminate/Session/Middleware/StartSession.php(121): Illuminate\Pipeline\Pipeline->Illuminate\Pipeline\{closure}()
#56 /var/www/html/vendor/laravel/framework/src/Illuminate/Session/Middleware/StartSession.php(64): Illuminate\Session\Middleware\StartSession->handleStatefulRequest()
#57 /var/www/html/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(180): Illuminate\Session\Middleware\StartSession->handle()
#58 /var/www/html/vendor/laravel/framework/src/Illuminate/Cookie/Middleware/AddQueuedCookiesToResponse.php(37): Illuminate\Pipeline\Pipeline->Illuminate\Pipeline\{closure}()
#59 /var/www/html/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(180): Illuminate\Cookie\Middleware\AddQueuedCookiesToResponse->handle()
#60 /var/www/html/vendor/laravel/framework/src/Illuminate/Cookie/Middleware/EncryptCookies.php(67): Illuminate\Pipeline\Pipeline->Illuminate\Pipeline\{closure}()
#61 /var/www/html/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(180): Illuminate\Cookie\Middleware\EncryptCookies->handle()
#62 /var/www/html/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(116): Illuminate\Pipeline\Pipeline->Illuminate\Pipeline\{closure}()
#63 /var/www/html/vendor/laravel/framework/src/Illuminate/Routing/Router.php(797): Illuminate\Pipeline\Pipeline->then()
#64 /var/www/html/vendor/laravel/framework/src/Illuminate/Routing/Router.php(776): Illuminate\Routing\Router->runRouteWithinStack()
#65 /var/www/html/vendor/laravel/framework/src/Illuminate/Routing/Router.php(740): Illuminate\Routing\Router->runRoute()
#66 /var/www/html/vendor/winter/storm/src/Router/CoreRouter.php(20): Illuminate\Routing\Router->dispatchToRoute()
#67 /var/www/html/vendor/laravel/framework/src/Illuminate/Foundation/Http/Kernel.php(190): Winter\Storm\Router\CoreRouter->dispatch()
#68 /var/www/html/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(141): Illuminate\Foundation\Http\Kernel->Illuminate\Foundation\Http\{closure}()
#69 /var/www/html/plugins/winter/debugbar/middleware/InjectDebugbar.php(31): Illuminate\Pipeline\Pipeline->Illuminate\Pipeline\{closure}()
#70 /var/www/html/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(180): Winter\Debugbar\Middleware\InjectDebugbar->handle()
#71 /var/www/html/vendor/laravel/framework/src/Illuminate/Foundation/Http/Middleware/PreventRequestsDuringMaintenance.php(86): Illuminate\Pipeline\Pipeline->Illuminate\Pipeline\{closure}()
#72 /var/www/html/vendor/winter/storm/src/Foundation/Http/Middleware/CheckForMaintenanceMode.php(25): Illuminate\Foundation\Http\Middleware\PreventRequestsDuringMaintenance->handle()
#73 /var/www/html/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(180): Winter\Storm\Foundation\Http\Middleware\CheckForMaintenanceMode->handle()
#74 /var/www/html/vendor/laravel/framework/src/Illuminate/Http/Middleware/HandleCors.php(49): Illuminate\Pipeline\Pipeline->Illuminate\Pipeline\{closure}()
#75 /var/www/html/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(180): Illuminate\Http\Middleware\HandleCors->handle()
#76 /var/www/html/vendor/winter/storm/src/Foundation/Http/Middleware/CheckForTrustedProxies.php(56): Illuminate\Pipeline\Pipeline->Illuminate\Pipeline\{closure}()
#77 /var/www/html/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(180): Winter\Storm\Foundation\Http\Middleware\CheckForTrustedProxies->handle()
#78 /var/www/html/vendor/winter/storm/src/Http/Middleware/TrustHosts.php(46): Illuminate\Pipeline\Pipeline->Illuminate\Pipeline\{closure}()
#79 /var/www/html/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(180): Winter\Storm\Http\Middleware\TrustHosts->handle()
#80 /var/www/html/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(116): Illuminate\Pipeline\Pipeline->Illuminate\Pipeline\{closure}()
#81 /var/www/html/vendor/laravel/framework/src/Illuminate/Foundation/Http/Kernel.php(165): Illuminate\Pipeline\Pipeline->then()
#82 /var/www/html/vendor/laravel/framework/src/Illuminate/Foundation/Http/Kernel.php(134): Illuminate\Foundation\Http\Kernel->sendRequestThroughRouter()
#83 /var/www/html/index.php(42): Illuminate\Foundation\Http\Kernel->handle()
#84 /var/www/html/server.php(17): require_once('...')
#85 {main}

Workaround

On line 24 of file "vendor/winter/storm/src/Database/Query/Grammars/Concerns/SelectConcatenations.php":

if (property_exists($query, 'concats') && is_array($query->concats) && count($query->concats)) {
    $select .= $this->compileConcats($query);
}

Pasquale-CS avatar May 16 '25 21:05 Pasquale-CS

@Pasquale-CS what is Awobaz\Compoships\Database\Query\Builder? Seems like you might have replaced the query builder with one of your own and not extended the correct query builder class for where your override is being used.

LukeTowers avatar May 16 '25 22:05 LukeTowers

@LukeTowers Awobaz\Compoships offers the ability to specify relationships based on two (or more) columns in Laravel Eloquent. This is the link of repo: https://github.com/Awobaz/compoships

Even removing the library the linter gives me error on "/winter/storm/src/Database/Query/Grammars/Concerns/SelectConcatenations.php" on line 22

Pasquale-CS avatar May 17 '25 13:05 Pasquale-CS

@Pasquale-CS please provide an example of how we can replicate the issue, ideally using the Test plugin. I haven't ran into this issue myself or heard of anyone else running into it so I'm curious as to what conditions trigger it happening.

LukeTowers avatar Jul 16 '25 20:07 LukeTowers

Closing as it has been over a month since any activity on this occurred and we are trying to figure out what issues are still relevant. If this is still something that you would like to see through to fruition please respond and we can get the ball rolling.

LukeTowers avatar Oct 21 '25 21:10 LukeTowers