表中字段:add_time、upd_time
Model中:
protected
$_auto = array(
array('add_time', 'time', self::MODEL_INSERT, 'function'),
array('upd_time', 'time', self::MODEL_BOTH, 'function'),
);
操作时,在create收集数据时,打印数据,没有发现主键id,便手动添加主键id
$goodsId = I('get.goods_id');
$goods = new GoodsModel();
if (IS_POST) {
$data = $goods->create();
$data['goods_id'] = $goodsId;
if ($goods->save($data)) {
$this->redirect("showlist");
} else {
$this->redirect('upd', array('goods_id' => $goodsId), 2, "修改失败");
}
} else {
...
}
原因分析:
create()方法, 判断你是Insert还是Update, 最关键的一点是看你的字段中是否含有主键,
你传过来的data数组, 其中并不含有主键, 对于create()方法来说就是创建一个用于新增的数组.
至于你在写入的时候使用的是where条件和save方法, 那些都是create()方法之后的事情了。
解决办法:
在表单中添加隐藏域,传递主键:
<input type="hidden" name="goods_id" value="{$info.goods_id}">
<input type="submit" value="修改">
Controller删除自己添加的字段:
$goodsId = I('get.goods_id');
$goods = new GoodsModel();
if (IS_POST) {
$data = $goods->create();
// $data['goods_id'] = $goodsId;
if ($goods->save($data)) {
$this->redirect("showlist");
} else {
$this->redirect('upd', array('goods_id' => $goodsId), 2, "修改失败");
}
} else {
...
}