进销存出库明细记录
diygw-ui-php项目里,一个增加记录等可能需要操作多张表的记录。我们以进销存的出库明细记录为例存储到数据库中,diygw-ui-php后台thinkphp后台通常涉及以下几个步骤:
数据库表定义
实现我们定义了三张表、一个产品表、出库订单表、出库订单产品明细表
生成API
进入DIY可视化API代码生成器,我们生成这三张表结应的API。
出库订单明细记录操作
我们在设计的表单界面写上我们出库记录的API。
出库订单数据操作
最核心的代码来了,我们这个add方法里可以增加我们的处理。系统model默认的add方法里有beforeAdd跟afterAdd拦截处理。
只需要在afterAdd拦截处理增加自己的代码。
afterAdd拦截方法处理
在orderModel增加增加后处理订单产品明细数据,对产品原有的数据进行数量减掉出库数量。
/* * 提交订单时加工产品数据增加入录记录明细 */ public function afterAdd(&$data){ $products = $data['products']; //循环出仓明细数据 foreach ($products as $product) { $id = $product['id']; //这里新增一个产品id来存放对应产品数据。 $product['productId'] = $product['id']; //默认id是一个自增值 unset($product['id']); $product['ordersId'] = $data['id']; //增加出库记录 $productOutModel = new ProductOutModel(); $productOutModel->add($product); //减少库存数量 $productModel = new ProductModel(); $productModel->decValue($id,'number',$product['number']); } return true; }