为了账号安全,请及时绑定邮箱和手机立即绑定

YII2模型层添加数据为什么没反应?

YII2模型层添加数据为什么没反应?

PHP
守候你守候我 2019-03-15 16:50:11
在写进销存的时候,在入库的时候需要把商品加到仓库中。代码如下 public function actionCreate() { $model = new Goods(); $model->sku = strtoupper(uniqid()); $model->datetime = time(); $model->admin_id = Yii::$app->user->id; if ($model->load(Yii::$app->request->post())) { $cost = $model->cost_price; $number = $model->numbers; $model->total = $cost * $number; $models=ArrayHelper::toArray($model); if ($model) { $model->save(); $models->add($models); return $this->redirect(['view', 'id' => $model->id]); } } else { return $this->render('create', [ 'model' => $model, ]); } } 这是添加到入库表的,$models->add($models);是添加到仓库表模型层的方法 public function add($data) { foreach ($data as $k=>$v) { $asku = Warehouse::find()->where(['sku'=>$v['sku']])->one(); $askuCount = Warehouse::find()->where(['sku'=>$v['sku']])->count(); } if (!$askuCount) { $Warehouse=new Warehouse; $Warehouse->datetime=time(); $Warehouse->cid=$data['cid']; $Warehouse->name=$data['name']; $Warehouse->sku=$data['sku']; $Warehouse->counts=$data['numbers']; $Warehouse->price=$data['price']; $Warehouse->flag=1; $Warehouse->save(); }else{ $asku->counts += $data['numbers']; $asku->timeLastOp=time(); $asku->save(); } } 可以打印出数据,但是不知道为什么添加之后不能再Warehouse这个表中添加数据,有人知道吗?刚用框架两天,不是很懂。
查看完整描述

6 回答

?
饮歌长啸

TA贡献1951条经验 获得超3个赞

谢邀,没用过yii2,你可以看看框架日志,看看执行的sql是怎么样的

查看完整回答
反对 回复 2019-03-18
?
慕神8447489

TA贡献1780条经验 获得超1个赞

你这样是修改数据,new Warehouse()才是新增。另外,循环之内,尽量别写sql语句。

查看完整回答
反对 回复 2019-03-18
?
jeck猫

TA贡献1909条经验 获得超7个赞

add 方法里 foreach$askuCount 这个变量是只存了最后一次循环结果吧,你循环外判断这个不应该是 += 的结果吗?或者说你把 if 判断放循环里。

查看完整回答
反对 回复 2019-03-18
  • 6 回答
  • 0 关注
  • 637 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信