190-beego删除类型修改属性

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/qq_33781658/article/details/85634880





beego删除类型修改属性


增加一个删除类型的功能

<a href="/deleteType">删除</a>

点击删除,要删除类型
那么要加上typeId

<a href="/deleteType?typeId={{.Id}}" >



func (this *ArticleController) DeleteType(){

//获取数据
typeId,err := this.GetInt("typeId")

//校验数据
if err!=nil{
	beego.Error("删除类型链接错误")
	this.Redirect("/addType", 302)
	return
}

//获取orm
o := orm.NewOrm()

//获取删除对象
var articleType models.ArticleType

//给删除对象赋值
articleType.Id=typeId

//删除
_,err = o.Delete(&articleType)
if err!=nil{
	beego.Error("删除失败")
	this.Redirect("/addType", 302)
	return
}

//返回
this.Redirect("/addType", 302)

}




现在有问题
就是被删除的类型下的文章
全都被删除了
我们应该把这个类型下的文章
归到其他类型里面
或者放到一个空类型里面


我们可以做一个简单的设置
就是在models中

1.cascade	级联删除(默认值)
2.set_null	设置为null,需要设置null=true
3.set_default	设置为默认值,需要设置default值
4.do_nothing 	什么也不做,忽略

示例:
type Article struct{
	Id int `orm:"pk;auto"`
	Title string `orm:"size(100)"`

	ArticleType *ArticleType `orm:"rel(fk);set_null;null"`
}

这样直接修改属性,是不生效的
我们设置强制更新,更新属性
orm.RunSyncdb("default",true,true)

这样的话,数据都会消失
所以一般我们不可能做这样的操作

一般重新建库或建表
这种强制更新的操作是不规范不安全的





func (this *ArticleController) ShowIndex(){

//从session中取出userName字段
userName := this.GetSession("userName")

//如果userName为空,说明session中没有userName
//说明没有登录,那么就redirect重定向到login登录页面
if userName == nil{
	this.Redirect("/login", 302)
	return
}

//对userName进行类型断言
//如果user
this.Data["userName"]=userName.(string)

}





beego框架
1.go语言开发的web框架
2.MVC架构
3.作者 谢孟军 astaxie

操作mysql
1.exec
2.query,queryrow
3.prepare

MVC
1.映射
	注册数据库
	注册表
	执行(别名,是否强制更新,建表过程是否可见)

2.增删改查
	获取orm对象
	定义操作对象
	给对象赋值
	执行操作

3.高级查询
	o.QueryTable获取qs对象
	All()
	Count()
	Limit()
	Filter()
	Distinct()
	OrderBy()
	GroupBy()

4.多表操作
	rel(one)   	reverse(one)
	rel(fk)		reverse(many)
	rel(m2m)	reverse(many)
relatedSel()
m2m.
o.QueryM2M(&article)

5.查询
o.loadRelate(&article,"Users")
Filter("字段名__表名__字段",value)

6.表属性的设置
pk
auto
default
null
size
unique
type(date)
auto_now / auto_now_add

7.语法
    循环{{range .users}}  	{{end}}

    校验{{if compare}}   	{{else}}	{{end}}

9.函数
在视图中定义函数名
在go后台中定义一个go函数
在beego.Run之前,把两者映射
.pageIndex | pre
{{pre .pageIndex}}

10.controller
业务处理:  请求-路由-控制器-视图
实现:	获取-校验-处理-返回
返回:
	this.Data
	this.TplName
	this.Redirect

11.文件处理
	file,head,err := getFile("Name")
	SaveToFile(Name,filePath)
	文件大小 head.Size()
	文件格式 path.Ext
	
12.路由过滤器
insertFilter("路由",门槛的位置,回调函数)





猜你喜欢

转载自blog.csdn.net/qq_33781658/article/details/85634880