thinkphp模型$_auto自动完成设置为插入时更新操作也变化的解决办法
表中字段: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 {
...
}
声明:该文观点仅代表作者本人,入门客AI创业平台信息发布平台仅提供信息存储空间服务,如有疑问请联系rumenke@qq.com。
- 上一篇: thinkphp多文件上传同时生成缩略图,保存到数据库
- 下一篇:没有了
