odiseoteam / SyliusVendorPlugin

This is a Sylius Plugin that add vendors (brands) to your store. The vendors is an entity that sells products and are fully customizable by the admin.
https://odiseo.io
MIT License
59 stars 21 forks source link

Seems mappedBy attribute missing : OneToMany mapping on field 'products' requires the 'mappedBy' attribute. #16

Closed bhaktaraz closed 3 years ago

bhaktaraz commented 3 years ago

Seems mapping not working.

Stack Trace

`Doctrine\ORM\Mapping\MappingException: OneToMany mapping on field 'products' requires the 'mappedBy' attribute.

at vendor/doctrine/orm/lib/Doctrine/ORM/Mapping/MappingException.php:259 at Doctrine\ORM\Mapping\MappingException::oneToManyRequiresMappedBy('products') (vendor/doctrine/orm/lib/Doctrine/ORM/Mapping/ClassMetadataInfo.php:1669) at Doctrine\ORM\Mapping\ClassMetadataInfo->_validateAndCompleteOneToManyMapping(array('fieldName' => 'products', 'targetEntity' => 'Sylius\Component\Core\Model\Product', 'type' => 4, 'mappedBy' => null, 'inversedBy' => null, 'isOwningSide' => true, 'sourceEntity' => 'Odiseo\SyliusVendorPlugin\Entity\Vendor', 'fetch' => 2, 'cascade' => array(), 'isCascadeRemove' => false, 'isCascadePersist' => false, 'isCascadeRefresh' => false, 'isCascadeMerge' => false, 'isCascadeDetach' => false)) (vendor/doctrine/orm/lib/Doctrine/ORM/Mapping/ClassMetadataInfo.php:2566) at Doctrine\ORM\Mapping\ClassMetadataInfo->mapOneToMany(array('fieldName' => 'products', 'targetEntity' => 'Sylius\Component\Core\Model\Product', 'type' => 4)) (vendor/odiseoteam/sylius-vendor-plugin/src/Mapping/VendorAwareListener.php:172) at Odiseo\SyliusVendorPlugin\Mapping\VendorAwareListener->mapVendor(object(ClassMetadata)) (vendor/odiseoteam/sylius-vendor-plugin/src/Mapping/VendorAwareListener.php:85) at Odiseo\SyliusVendorPlugin\Mapping\VendorAwareListener->loadClassMetadata(object(LoadClassMetadataEventArgs)) (vendor/symfony/doctrine-bridge/ContainerAwareEventManager.php:58) at Symfony\Bridge\Doctrine\ContainerAwareEventManager->dispatchEvent('loadClassMetadata', object(LoadClassMetadataEventArgs)) (vendor/doctrine/orm/lib/Doctrine/ORM/Mapping/ClassMetadataFactory.php:242) at Doctrine\ORM\Mapping\ClassMetadataFactory->doLoadMetadata(object(ClassMetadata), null, false, array()) (vendor/doctrine/persistence/lib/Doctrine/Persistence/Mapping/AbstractClassMetadataFactory.php:306) at Doctrine\Persistence\Mapping\AbstractClassMetadataFactory->loadMetadata('Odiseo\SyliusVendorPlugin\Entity\Vendor') (vendor/doctrine/orm/lib/Doctrine/ORM/Mapping/ClassMetadataFactory.php:78) at Doctrine\ORM\Mapping\ClassMetadataFactory->loadMetadata('Odiseo\SyliusVendorPlugin\Entity\Vendor') (vendor/doctrine/persistence/lib/Doctrine/Persistence/Mapping/AbstractClassMetadataFactory.php:185) at Doctrine\Persistence\Mapping\AbstractClassMetadataFactory->getMetadataFor('Odiseo\SyliusVendorPlugin\Entity\Vendor') (vendor/doctrine/orm/lib/Doctrine/ORM/EntityManager.php:285) at Doctrine\ORM\EntityManager->getClassMetadata('Odiseo\SyliusVendorPlugin\Entity\Vendor') (var/cache/dev/Container8JfB0Bv/EntityManager_9a5be93.php:86) at EntityManager_9a5be93->getClassMetadata('Odiseo\SyliusVendorPlugin\Entity\Vendor') (var/cache/dev/Container8JfB0Bv/getOdiseoSyliusVendorPlugin_Repository_VendorService.php:14) at require('/var/www/html/sylius/var/cache/dev/Container8JfB0Bv/getOdiseoSyliusVendorPlugin_Repository_VendorService.php') (var/cache/dev/Container8JfB0Bv/srcApp_KernelDevDebugContainer.php:2077) at Container8JfB0Bv\srcApp_KernelDevDebugContainer->load('getOdiseoSyliusVendorPlugin_Repository_VendorService.php') (var/cache/dev/Container8JfB0Bv/getOdiseoSyliusVendorPlugin_Controller_VendorService.php:25) at require('/var/www/html/sylius/var/cache/dev/Container8JfB0Bv/getOdiseoSyliusVendorPlugin_Controller_VendorService.php') (var/cache/dev/Container8JfB0Bv/srcApp_KernelDevDebugContainer.php:2077) at Container8JfB0Bv\srcApp_KernelDevDebugContainer->load('getOdiseoSyliusVendorPlugin_Controller_VendorService.php') (vendor/symfony/dependency-injection/Container.php:249) at Symfony\Component\DependencyInjection\Container->make('odiseo_sylius_vendor_plugin.controller.vendor', 1) (vendor/symfony/dependency-injection/Container.php:225) at Symfony\Component\DependencyInjection\Container->get('odiseo_sylius_vendor_plugin.controller.vendor') (vendor/symfony/http-kernel/Controller/ContainerControllerResolver.php:53) at Symfony\Component\HttpKernel\Controller\ContainerControllerResolver->instantiateController('odiseo_sylius_vendor_plugin.controller.vendor') (vendor/symfony/framework-bundle/Controller/ControllerResolver.php:70) at Symfony\Bundle\FrameworkBundle\Controller\ControllerResolver->instantiateController('odiseo_sylius_vendor_plugin.controller.vendor') (vendor/symfony/http-kernel/Controller/ControllerResolver.php:122) at Symfony\Component\HttpKernel\Controller\ControllerResolver->createController('odiseo_sylius_vendor_plugin.controller.vendor::indexAction') (vendor/symfony/http-kernel/Controller/ContainerControllerResolver.php:42) at Symfony\Component\HttpKernel\Controller\ContainerControllerResolver->createController('odiseo_sylius_vendor_plugin.controller.vendor::indexAction') (vendor/symfony/framework-bundle/Controller/ControllerResolver.php:62) at Symfony\Bundle\FrameworkBundle\Controller\ControllerResolver->createController('odiseo_sylius_vendor_plugin.controller.vendor:indexAction') (vendor/symfony/http-kernel/Controller/ControllerResolver.php:86) at Symfony\Component\HttpKernel\Controller\ControllerResolver->getController(object(Request)) (vendor/symfony/http-kernel/Controller/TraceableControllerResolver.php:38) at Symfony\Component\HttpKernel\Controller\TraceableControllerResolver->getController(object(Request)) (vendor/symfony/http-kernel/HttpKernel.php:129) at Symfony\Component\HttpKernel\HttpKernel->handleRaw(object(Request), 1) (vendor/symfony/http-kernel/HttpKernel.php:68) at Symfony\Component\HttpKernel\HttpKernel->handle(object(Request), 1, true) (vendor/symfony/http-kernel/Kernel.php:201) at Symfony\Component\HttpKernel\Kernel->handle(object(Request)) (public/index.php:27)`

bigboss86 commented 3 years ago

Hi @bhaktaraz. Have you extended the product class as indicated in the installation doc?

bhaktaraz commented 3 years ago

Yes.

bigboss86 commented 3 years ago

And have you registered it as a resource?

bhaktaraz commented 3 years ago

Yes followed up to step 6.

Added this configuration

# config/packages/_sylius.yaml sylius_product: resources: product: classes: repository: App\Repository\ProductRepository

Created ProductRepository in src/Repository but adding that leads me to error : Warning: class_implements(): Class App\Repository\ProductRepository does not exist and could not be loaded.

So haven't override the product repository.

Is it necessary to override product repository?

bigboss86 commented 3 years ago

And you have this configuration?

sylius_product:
    resources:
        product:
            classes:
                model: App\Entity\Product

Yes, is necessary override the product repository to show vendor's products in the shop page.

bigboss86 commented 3 years ago

@bhaktaraz Have you been able to solve it?