public function registerDoctrineMapping(array $config)
{
if (!class_exists($config['class']['product'])) {
return;
}
$collector = DoctrineCollector::getInstance();
/*
* DELIVERY
*/
$collector->addAssociation($config['class']['delivery'], 'mapManyToOne', array('fieldName' => 'product', 'targetEntity' => $config['class']['product'], 'cascade' => array('persist'), 'mappedBy' => null, 'inversedBy' => 'deliveries', 'joinColumns' => array(array('name' => 'product_id', 'referencedColumnName' => 'id', 'onDelete' => 'CASCADE')), 'orphanRemoval' => false));
/*
* PACKAGE
*/
$collector->addAssociation($config['class']['package'], 'mapManyToOne', array('fieldName' => 'product', 'targetEntity' => $config['class']['product'], 'cascade' => array('persist'), 'mappedBy' => null, 'inversedBy' => 'packages', 'joinColumns' => array(array('name' => 'product_id', 'referencedColumnName' => 'id', 'onDelete' => 'CASCADE')), 'orphanRemoval' => false));
/*
* PRODUCT CATEGORY
*/
$collector->addAssociation($config['class']['product_category'], 'mapManyToOne', array('fieldName' => 'product', 'targetEntity' => $config['class']['product'], 'cascade' => array('persist'), 'mappedBy' => null, 'inversedBy' => 'productCategories', 'joinColumns' => array(array('name' => 'product_id', 'referencedColumnName' => 'id', 'onDelete' => 'CASCADE', 'onUpdate' => 'CASCADE')), 'orphanRemoval' => false));
$collector->addAssociation($config['class']['product_category'], 'mapManyToOne', array('fieldName' => 'category', 'targetEntity' => $config['class']['category'], 'cascade' => array('persist'), 'mappedBy' => null, 'joinColumns' => array(array('name' => 'category_id', 'referencedColumnName' => 'id', 'onDelete' => 'CASCADE', 'onUpdate' => 'CASCADE')), 'orphanRemoval' => false));
/*
* PRODUCT COLLECTION
*/
$collector->addAssociation($config['class']['product_collection'], 'mapManyToOne', array('fieldName' => 'product', 'targetEntity' => $config['class']['product'], 'cascade' => array('persist'), 'mappedBy' => null, 'inversedBy' => 'productCollections', 'joinColumns' => array(array('name' => 'product_id', 'referencedColumnName' => 'id', 'onDelete' => 'CASCADE', 'onUpdate' => 'CASCADE')), 'orphanRemoval' => false));
$collector->addAssociation($config['class']['product_collection'], 'mapManyToOne', array('fieldName' => 'collection', 'targetEntity' => $config['class']['collection'], 'cascade' => array('persist'), 'mappedBy' => null, 'inversedBy' => 'productCollection', 'joinColumns' => array(array('name' => 'collection_id', 'referencedColumnName' => 'id', 'onDelete' => 'CASCADE', 'onUpdate' => 'CASCADE')), 'orphanRemoval' => false));
/*
* PRODUCT
*/
$collector->addAssociation($config['class']['product'], 'mapOneToMany', array('fieldName' => 'packages', 'targetEntity' => $config['class']['package'], 'cascade' => array('persist'), 'mappedBy' => 'product', 'orphanRemoval' => false));
$collector->addAssociation($config['class']['product'], 'mapOneToMany', array('fieldName' => 'deliveries', 'targetEntity' => $config['class']['delivery'], 'cascade' => array('persist'), 'mappedBy' => 'product', 'orphanRemoval' => false));
$collector->addAssociation($config['class']['product'], 'mapOneToMany', array('fieldName' => 'productCategories', 'targetEntity' => $config['class']['product_category'], 'cascade' => array('persist'), 'mappedBy' => 'product', 'orphanRemoval' => false));
$collector->addAssociation($config['class']['product'], 'mapOneToMany', array('fieldName' => 'productCollections', 'targetEntity' => $config['class']['product_collection'], 'cascade' => array('persist'), 'mappedBy' => 'product', 'orphanRemoval' => false));
$collector->addAssociation($config['class']['product'], 'mapManyToOne', array('fieldName' => 'image', 'targetEntity' => $config['class']['media'], 'cascade' => array(), 'mappedBy' => null, 'inversedBy' => null, 'joinColumns' => array(array('name' => 'image_id', 'referencedColumnName' => 'id', 'onDelete' => 'SET NULL')), 'orphanRemoval' => false));
$collector->addAssociation($config['class']['product'], 'mapManyToOne', array('fieldName' => 'gallery', 'targetEntity' => $config['class']['gallery'], 'cascade' => array(), 'mappedBy' => null, 'inversedBy' => null, 'joinColumns' => array(array('name' => 'gallery_id', 'referencedColumnName' => 'id', 'onDelete' => 'SET NULL')), 'orphanRemoval' => false));
$collector->addAssociation($config['class']['product'], 'mapManyToOne', array('fieldName' => 'parent', 'targetEntity' => $config['class']['product'], 'cascade' => array('persist'), 'mappedBy' => null, 'inversedBy' => 'variations', 'joinColumns' => array(array('name' => 'parent_id', 'referencedColumnName' => 'id', 'onDelete' => 'CASCADE')), 'orphanRemoval' => false));
$collector->addAssociation($config['class']['product'], 'mapOneToMany', array('fieldName' => 'variations', 'targetEntity' => $config['class']['product'], 'cascade' => array('persist'), 'mappedBy' => 'parent', 'orphanRemoval' => false));
$collector->addIndex($config['class']['product'], 'enabled', array('enabled'));
}