yii2订单的表单如何设计?

chair128 2019-06-27 04:09:32
大家好!
对于订单这种一对多的关系,yii2中的view表单应该怎么设计比较好?网上没找到例子,
比如,现在系统中有如下代码:
model:

//订单头:
class Order extends ActiveRecord
{
public function attributeLabels() {
return [
'id' => '订单ID',
'bill_date' => '日期',
'bill_no' => '单据编号',
'status' => '状态',
];
}
public function getOrderDetails() {
return $this->hasMany(OrderDetail::className(), ['id' => 'id']);
}
}

//订单明细:
class OrderDetail extends ActiveRecord
{
public function attributeLabels() {
return [
'detail_id' => '明细ID',
'id' => '订单ID',
'index' => '序号',
'material_id' => '物料',
'auxqty' => '数量',
'unit_id' => '单位',
'taxprice' => '含税单价',
'note' => '备注',
];
}
public function getOrderDetails() {
return $this->hasOne(Order::className(), ['id' => 'id']);
}
}

控制器和视图表单应该怎么写,才可以方便用户输入订单表头和订单明细?谢谢指点!
...全文
357 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
司码君 2019-10-16
  • 打赏
  • 举报
回复
可以在Gii中自动创建ActiveRecord模型,如果必要可以在手动增加模型关系,返回ActiceQuery对象,如: /** * @return \yii\db\ActiveQuery */ public function getParents() { return $this->hasMany(...); } 模型的CURD方法在控制器对应方法中调用,并做权限检测。各种视图和Form可以通过Gii生成,这些应该都是差不多的。 你说到的表头和明细的问题,可以在Gii生成的表单的基础上进行修改,一般把这类有表头和明细的操作分为两个步骤,首先建立表头,输入必要的数据,保存后逐个添加明细,明细部分支持CURD操作;对于表头部分的数据可自动计算产生的,也可以在建立第一个明细的时候自动创建表头,视需求选择。至于如何布局,采用什么操作流程,可以参考财务软件或者ERP系统。 在对表头进行删除操作的时候有两个选择,一种是首先删除所有的明细之后才能删除表头,另一种是同时删除表头和明细,也是看需求情况而定。这种关联操作可以在数据库中创建有及连操作的外键,现在大部分RDBMS都能支持,如果选择的数据库没有这种操作,也可以在模型里编写beforeDelete方法创建对应操作。 希望能帮助到你......
chair128 2019-10-16
  • 打赏
  • 举报
回复
谢谢回复,我采用了先输入单据头,然后在单据头列表中点击按钮弹出单据明细表单,这样实现起来比较简单。
chair128 2019-07-10
  • 打赏
  • 举报
回复
没有人知道吗?这样的需求应该很多才对啊,一对多关系模型的增删改查怎么写呢?请知道的指导一下,谢谢!

4,251

社区成员

发帖
与我相关
我的任务
社区描述
国内外优秀PHP框架讨论学习
社区管理员
  • Framework
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧