I am building a package which, among other things, tracks Property Tax Rates. I wanted to use Doctrine Entities to setup the db AND have a custom repository class… I can’t get the last bit working though. Was wondering if I could get some help, as I suppose this would be easy for someone with more concrete experience.
I have:
packages/property_tax_rates/src/Concrete/Entity/PropertyTaxRate.php
<?php
namespace Concrete\Package\PropertyTaxRates\Entity;
use Doctrine\ORM\Mapping as ORM;
/**
* @ORM\Entity(repositoryClass="Concrete\Package\PropertyTaxRates\Repository\PropertyTaxRate")
* @ORM\Table(name="PropertyTaxRate")
*/
class PropertyTaxRate
{
// does stuff
}
and packages/property_tax_rates/src/Concrete/Repository/PropertyTaxRate.php
<?php
namespace Concrete\Package\PropertyTaxRates\Repository;
class PropertyTaxRate extends BaseRepository
{
public function truncate() {
// does stuff
}
}
However, when I try to run
Package::getByHandle($this->pkg)->getEntityManager()->getRepository(PropertyTaxRate::class)->truncate();
The response is…
Handling "Concrete\Package\PropertyTaxRates\Command\FetchPropertyTaxRatesCommand" failed: Undefined method "truncate". The method name must start with either findBy, findOneBy or countBy!
Details
/var/www/html/concrete/vendor/symfony/messenger/Middleware/HandleMessageMiddleware.php(80): Symfony\Component\Messenger\Exception\HandlerFailedException->null
/var/www/html/concrete/vendor/doctrine/orm/lib/Doctrine/ORM/EntityRepository.php(260): BadMethodCallException->null
/var/www/html/packages/property_tax_rates/src/Command/FetchPropertyTaxRatesCommandHandler.php(62): Doctrine\ORM\EntityRepository->__call
/var/www/html/concrete/vendor/symfony/messenger/Middleware/HandleMessageMiddleware.php(63): Concrete\Package\PropertyTaxRates\Command\FetchPropertyTaxRatesCommandHandler->__invoke
/var/www/html/concrete/vendor/symfony/messenger/Middleware/SendMessageMiddleware.php(74): Symfony\Component\Messenger\Middleware\HandleMessageMiddleware->handle
/var/www/html/concrete/vendor/symfony/messenger/Middleware/FailedMessageProcessingMiddleware.php(34): Symfony\Component\Messenger\Middleware\SendMessageMiddleware->handle
/var/www/html/concrete/vendor/symfony/messenger/Middleware/DispatchAfterCurrentBusMiddleware.php(68): Symfony\Component\Messenger\Middleware\FailedMessageProcessingMiddleware->handle
/var/www/html/concrete/vendor/symfony/messenger/Middleware/RejectRedeliveredMessageMiddleware.php(48): Symfony\Component\Messenger\Middleware\DispatchAfterCurrentBusMiddleware->handle
/var/www/html/concrete/vendor/symfony/messenger/Middleware/AddBusNameStampMiddleware.php(37): Symfony\Component\Messenger\Middleware\RejectRedeliveredMessageMiddleware->handle
/var/www/html/concrete/vendor/symfony/messenger/MessageBus.php(77): Symfony\Component\Messenger\Middleware\AddBusNameStampMiddleware->handle
/var/www/html/concrete/src/Command/Task/Runner/Context/DashboardContext.php(14): Symfony\Component\Messenger\MessageBus->dispatch
/var/www/html/concrete/src/Command/Task/Runner/CommandTaskRunnerHandler.php(46): Concrete\Core\Command\Task\Runner\Context\DashboardContext->dispatchCommand
/var/www/html/concrete/controllers/Backend/Tasks.php(109): Concrete\Core\Command\Task\Runner\CommandTaskRunnerHandler->run
/var/www/html/concrete/src/Controller/AbstractController.php(318): Concrete\Controller\Backend\Tasks->execute
/var/www/html/concrete/src/Controller/AbstractController.php(318): null->call_user_func_array
/var/www/html/concrete/src/Routing/ControllerRouteAction.php(64): Concrete\Core\Controller\AbstractController->runAction
/var/www/html/concrete/src/Http/RouteDispatcher.php(37): Concrete\Core\Routing\ControllerRouteAction->execute
/var/www/html/concrete/src/Http/Middleware/DispatcherDelegate.php(39): Concrete\Core\Http\RouteDispatcher->dispatch
/var/www/html/concrete/src/Http/Middleware/MiddlewareStack.php(86): Concrete\Core\Http\Middleware\DispatcherDelegate->next
/var/www/html/concrete/src/Http/DefaultDispatcher.php(127): Concrete\Core\Http\Middleware\MiddlewareStack->process
/var/www/html/concrete/src/Http/DefaultDispatcher.php(60): Concrete\Core\Http\DefaultDispatcher->handleDispatch
/var/www/html/concrete/src/Http/Middleware/DispatcherDelegate.php(39): Concrete\Core\Http\DefaultDispatcher->dispatch
/var/www/html/concrete/src/Http/Middleware/FrameOptionsMiddleware.php(39): Concrete\Core\Http\Middleware\DispatcherDelegate->next
/var/www/html/concrete/src/Http/Middleware/MiddlewareDelegate.php(50): Concrete\Core\Http\Middleware\FrameOptionsMiddleware->process
/var/www/html/concrete/src/Http/Middleware/StrictTransportSecurityMiddleware.php(36): Concrete\Core\Http\Middleware\MiddlewareDelegate->next
/var/www/html/concrete/src/Http/Middleware/MiddlewareDelegate.php(50): Concrete\Core\Http\Middleware\StrictTransportSecurityMiddleware->process
/var/www/html/concrete/src/Http/Middleware/ContentSecurityPolicyMiddleware.php(36): Concrete\Core\Http\Middleware\MiddlewareDelegate->next
/var/www/html/concrete/src/Http/Middleware/MiddlewareDelegate.php(50): Concrete\Core\Http\Middleware\ContentSecurityPolicyMiddleware->process
/var/www/html/concrete/src/Http/Middleware/CookieMiddleware.php(35): Concrete\Core\Http\Middleware\MiddlewareDelegate->next
/var/www/html/concrete/src/Http/Middleware/MiddlewareDelegate.php(50): Concrete\Core\Http\Middleware\CookieMiddleware->process
/var/www/html/concrete/src/Http/Middleware/ApplicationMiddleware.php(29): Concrete\Core\Http\Middleware\MiddlewareDelegate->next
/var/www/html/concrete/src/Http/Middleware/MiddlewareDelegate.php(50): Concrete\Core\Http\Middleware\ApplicationMiddleware->process
/var/www/html/concrete/src/Http/Middleware/MiddlewareStack.php(86): Concrete\Core\Http\Middleware\MiddlewareDelegate->next
/var/www/html/concrete/src/Http/DefaultServer.php(85): Concrete\Core\Http\Middleware\MiddlewareStack->process
/var/www/html/concrete/src/Foundation/Runtime/Run/DefaultRunner.php(125): Concrete\Core\Http\DefaultServer->handleRequest
/var/www/html/concrete/src/Foundation/Runtime/DefaultRuntime.php(102): Concrete\Core\Foundation\Runtime\Run\DefaultRunner->run
/var/www/html/concrete/dispatcher.php(45): Concrete\Core\Foundation\Runtime\DefaultRuntime->run
/var/www/html/index.php(2): null->require
It seems as if the custom repository class I defined is not being recognized. I have tried uninstalling/reinstalling the package and playing around with file position and namespacing with no luck.
Help please!