Magento 1.9.2创造了客户与产品之间的关系

时间:2016-02-05 20:55:05

标签: php magento

我试图在客户和产品之间创建关系表。计划是在编辑客户时我将有一个单独的标签,以便能够以类似“相关产品”的方式将产品分配给客户。选项卡在编辑产品时有效。

到目前为止,我能够向管理员添加一个标签,但是大步骤在我面前。我想创建一个多对多关系表,所以我在下面添加了一个文件mysql4-install-0.1.0.php:

$installer = $this;

$installer->startSetup();

/**
 * Create table 'customerproduct/product_relation'
 */
$table = $installer->getConnection()
    ->newTable($installer->getTable('customerproduct/product_relation'))
    ->addColumn('customer_id', Varien_Db_Ddl_Table::TYPE_INTEGER, null, array(
        'unsigned'  => true,
        'nullable'  => false,
        'primary'   => true,
        ), 'Customer ID')
    ->addColumn('product_id', Varien_Db_Ddl_Table::TYPE_INTEGER, null, array(
        'unsigned'  => true,
        'nullable'  => false,
        'primary'   => true,
        ), 'Product ID')
    ->addIndex($installer->getIdxName('customerproduct/product_relation',     array('product_id')),
        array('product_id'))
    ->addForeignKey($installer->getFkName('customerproduct/product_relation',     'product_id', 'customer/product', 'entity_id'),
        'product_id', $installer->getTable('catalog/product'), 'entity_id',
        Varien_Db_Ddl_Table::ACTION_CASCADE, Varien_Db_Ddl_Table::ACTION_CASCADE)
    ->addForeignKey($installer->getFkName('customerproduct/product_relation',     'customer_id', 'customer/entity', 'entity_id'),
        'customer_id', $installer->getTable('customer/entity'), 'entity_id',
    Varien_Db_Ddl_Table::ACTION_CASCADE, Varien_Db_Ddl_Table::ACTION_CASCADE)
    ->setComment('Customer Product Relation Table');
$installer->getConnection()->createTable($table);

$installer->endSetup();

$installer->installEntities();

不确定上述内容是否正确,因为它甚至无法访问此文件。我会很感激如何处理这个问题,以及如何控制挽救这种关系。我已经在互联网上寻找类似的解决方案,但没有运气。

编辑1:
config.xml如下所示:

<config>
    <modules>
        <Trike_Customerproduct>
            <version>0.1.0</version>
        </Trike_Customerproduct>
    </modules>
    <adminhtml>
        <layout>
            <updates>
                <customerproduct>
                    <file>trike_customerproduct.xml</file>
                </customerproduct>
            </updates>
        </layout>
    </adminhtml>
    <global>
        <blocks>
            <customerproduct>
                <class>Trike_Customerproduct_Block</class>
            </customerproduct>
        </blocks>
    </global>
</config>

我注意到它没有出现在core_resource表中。配置中的版本设置为0.1.0,安装程序名为mysql4-install-0.1.0.php,并将其放在文件夹中:sql&gt; customerproduct_setup

1 个答案:

答案 0 :(得分:0)

在下面找到有关如何使安装/升级脚本工作的详细解答。

第1步:

使用以下文件创建模块:

  

应用程序/代码/本地/三轮车/ Customerproduct的/ etc / config.xml中

     

应用程序/代码/本地/三轮车/ Customerproduct /型号/ Customerproduct.php

     

应用程序/代码/本地/三轮车/ Customerproduct /型号/资源/ Customerproduct.php

     

应用程序/代码/本地/三轮车/ Customerproduct /型号/资源/ Customerproduct / Collection.php

     

应用程序/代码/本地/三轮车/ Customerproduct /型号/资源/ Setup.php

     

应用程序/代码/本地/三轮车/ Customerproduct / SQL / customerproduct_setup /安装-1.0.0.php

第2步:

确保每个文件中都有以下内容:

应用/代码/本地/三轮车/ Customerproduct的/ etc / config.xml中

<?xml version="1.0" encoding="UTF-8"?>
<config>
    <modules>
        <Trike_Customerproduct>
            <version>1.0.0</version>
        </Trike_Customerproduct>
    </modules>
    <global>
        <blocks>
            <customerproduct>
                <class>Trike_Customerproduct_Block</class>
            </customerproduct>
        </blocks>
        <models>            
            <customerproduct>
                <class>Trike_Customerproduct_Model</class>
                <resourceModel>customerproduct_resource</resourceModel>
            </customerproduct>
            <customerproduct_resource>
                <class>Trike_Customerproduct_Model_Resource</class>
                <entities>
                    <product_relation>
                        <table>customer_product_relation</table>
                    </product_relation>
                </entities>
            </customerproduct_resource>
        </models>
        <resources>
            <customerproduct_setup>
                <setup>
                    <module>Trike_Customerproduct</module>
                    <class>Trike_Customerproduct_Model_Resource_Setup</class>
                </setup>
            </customerproduct_setup>
        </resources>
    </global>
    <adminhtml>
        <layout>
            <updates>
                <customerproduct>
                    <file>trike_customerproduct.xml</file>
                </customerproduct>
            </updates>
        </layout>
    </adminhtml>
</config>

应用/代码/本地/三轮车/ Customerproduct /型号/ Customerproduct.php

<?php
class Trike_Customerproduct_Model_Customerproduct extends Mage_Catalog_Model_Abstract
{   
    protected function _construct()
    {
        $this->_init('customerproduct/product_relation');
    }
}

应用/代码/本地/三轮车/ Customerproduct /型号/资源/ Customerproduct.php

<?php
class Trike_Customerproduct_Model_Resource_Customerproduct extends Mage_Catalog_Model_Resource_Abstract
{
    protected function _construct()
    {
        $this->_init('customerproduct/product_relation','customer_id');
    }
}

应用/代码/本地/三轮车/ Customerproduct /型号/资源/ Customerproduct / Collection.php

<?php
class Trike_Customerproduct_Model_Resource_Customerproduct_Collection extends Mage_Catalog_Model_Resource_Product_Collection
{
    protected function _construct()
    {
        $this->_init('customerproduct/product_relation');
    }
}

应用/代码/本地/三轮车/ Customerproduct /型号/资源/ Setup.php

<?php
class Trike_Customerproduct_Model_Resource_Setup extends Mage_Catalog_Model_Resource_Setup {}

应用/代码/本地/三轮车/ Customerproduct / SQL / customerproduct_setup /安装-1.0.0.php

我能够在上面找到您的安装脚本代码的问题。所以我在这里更新了你的代码并发布了文件(没有错误):

<?php
$installer = $this;

$installer->startSetup();

/**
 * Create table 'customerproduct/product_relation'
 */
$table = $installer->getConnection()
    ->newTable($installer->getTable('customerproduct/product_relation'))
    ->addColumn('customer_id', Varien_Db_Ddl_Table::TYPE_INTEGER, null, array(
        'unsigned'  => true,
        'nullable'  => false,
        'primary'   => true,
        ), 'Customer ID')
    ->addColumn('product_id', Varien_Db_Ddl_Table::TYPE_INTEGER, null, array(
        'unsigned'  => true,
        'nullable'  => false,
        'primary'   => true,
        ), 'Product ID')
    ->addIndex($installer->getIdxName('customerproduct/product_relation',     array('product_id')),
        array('product_id'))
    ->addForeignKey($installer->getFkName('customerproduct/product_relation',     'product_id', 'catalog/product', 'entity_id'),
        'product_id', $installer->getTable('catalog/product'), 'entity_id',
        Varien_Db_Ddl_Table::ACTION_CASCADE, Varien_Db_Ddl_Table::ACTION_CASCADE)
    ->addForeignKey($installer->getFkName('customerproduct/product_relation',     'customer_id', 'customer/entity', 'entity_id'),
        'customer_id', $installer->getTable('customer/entity'), 'entity_id',
    Varien_Db_Ddl_Table::ACTION_CASCADE, Varien_Db_Ddl_Table::ACTION_CASCADE)
    ->setComment('Customer Product Relation Table');

$installer->getConnection()->createTable($table);

$installer->endSetup();

$installer->installEntities();

我已经在我的本地机器上进行了测试,但它确实有效。

屏幕截图如下:

enter image description here

enter image description here

快乐编码......