Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/269.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/magento/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php Magento自定义订单属性/字段?朝自己的脚开枪?_Php_Magento_Catalog_Ecommerce Sales - Fatal编程技术网

Php Magento自定义订单属性/字段?朝自己的脚开枪?

Php Magento自定义订单属性/字段?朝自己的脚开枪?,php,magento,catalog,ecommerce-sales,Php,Magento,Catalog,Ecommerce Sales,我正在建立一个Magento商店,使用4个域的单一目录:1个用于美国,3个用于欧洲(英国、法国和德国)。在欧洲有一个履行仓库,在美国有一个履行仓库,在美国有一种非官方/内部“仓库”,在那里履行赠品等,我们不跟踪Magento的库存水平。我们需要跟踪特定的交易类型,如普通网络销售以及内部/管理订单,如非网络销售、赠品、展会订单等。我的计划是扩展核心订单模型,添加某种“订单/交易类型”字段,然后在下订单时,处理订单数据,并根据门店id和“订单类型”值指示将订单发送到哪个仓库进行履行 作为Magent

我正在建立一个Magento商店,使用4个域的单一目录:1个用于美国,3个用于欧洲(英国、法国和德国)。在欧洲有一个履行仓库,在美国有一个履行仓库,在美国有一种非官方/内部“仓库”,在那里履行赠品等,我们不跟踪Magento的库存水平。我们需要跟踪特定的交易类型,如普通网络销售以及内部/管理订单,如非网络销售、赠品、展会订单等。我的计划是扩展核心订单模型,添加某种“订单/交易类型”字段,然后在下订单时,处理订单数据,并根据门店id和“订单类型”值指示将订单发送到哪个仓库进行履行


作为Magento的新手,我想知道这种设置是否出于某种原因是个坏主意。我是在射自己的脚吗?是否有任何理由认为单一目录可能存在问题?是否有更简单或更好的方法来处理此流程?有没有一种方法可以像添加产品一样将自定义属性添加到订单中?

您的方向是正确的,但是(与大多数Magento产品一样),有两种选择。这里最重要的原则是,修改的体系结构不得导致核心上的升级/补丁受到损害。有趣的是,在当前版本中,Magento已经不再使用高度可扩展和升级安全(主要是)的EAV模型,用于
Mage\u Sales\u model\u Order
(以及相关对象)。IMHO说,这使得以升级安全的方式添加属性变得更加困难


我建议您使用Observer系统将新属性值添加到相关模型中。也就是说,不要将属性添加到订单模型本身,而是创建一个包含
Order\u id
和自定义属性的模型。挂接到适当的事件(对于所有订单,可能是
sales\u convert\u quote\u to\u order
,对于前端订单,可能是
checkout\u type\u onepage\u save\u order\u after
),并检查报价项以设置自定义模型中的值。当您执行将订单发送至履行机构的流程时,您可以通过
订单id
查找自定义属性

另一个(更好的?)选择是按照Ivan的建议,使用Magento的sales setup类以升级安全的方式将数据添加到sales\u flat\u order表中。

响应良好+感谢您创建一个新表以确保商店升级安全。谢谢Jonathan,听起来很完美!