和lock一塊兒學beego 博客系統開發爲例(二)

接着上篇來寫《和lock一塊兒學beego 博客系統開發爲例(一)mysql

這篇主要完成如下事項:git

1.beego框架,項目的創建github

 2.  表數據的設計sql

 3.  模型的創建數據庫

(這篇在公司裏寫的,用的是win機器)api

 1、beego項目的創建瀏覽器

beego自帶的工具bee是一個很是好的工具,能夠建立項目及API接口等。因此在創建項目以前,務必先下載bee工具,bash

在命令符下:框架

go get github.com/beego/bee

安裝好後,能夠在系統環境變量加添加bee的路徑,方便後續直接bee 命令執行工具

以win爲例:這個目錄會有bee.exe

C:\GOPATH\bin

如今能夠直接在cmd下,bee命令測試了。

咱們能夠切換到C:\GOPATH\src目錄下,用bee new blog命令來建立項目

bee new blog

會自動生成以下文件:

這樣beego項目建立完成了。

在這裏介紹一下bee的命令經常使用參數:

new :建立新項目
run  :運行項目,默認是以8080端口運行,能夠在瀏覽器運行localhost:8080,出會提示頁面

api :是用來建立api項目的,生成的目錄略有不一樣

 

2、表數據的設計

既然是簡單的博客,那麼表也是很經常使用的,以下

article:博客文章表

comment:博客評論表

user:用戶表

user_profile:用戶詳細表

album:相冊表

這幾張表,足夠玩轉一個blog了~由於是簡單blog嗎~

在這裏說明一下,若是在項目裏建立model話,能夠自動生成表,這裏先不做說明,直接給SQL語句,在庫中直接運行,庫名稱:blog

CREATE TABLE `album` (
  `id` int(10) NOT NULL AUTO_INCREMENT,
  `title` varchar(255) NOT NULL DEFAULT '' COMMENT '文章標題',
  `picture` varchar(255) DEFAULT '' COMMENT 'Picture',
  `keywords` varchar(2550) DEFAULT '' COMMENT '關鍵詞',
  `summary` varchar(255) DEFAULT '',
  `created` int(10) DEFAULT '0' COMMENT '發佈時間',
  `viewnum` int(10) DEFAULT '0' COMMENT '閱讀次數',
  `status` tinyint(1) DEFAULT '1' COMMENT '狀態: 0草稿,1已發佈',
  PRIMARY KEY (`id`),
  KEY `INDEX_TCVS` (`title`,`created`,`viewnum`,`status`) USING BTREE
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='相冊';


CREATE TABLE `article` (
  `id` int(10) NOT NULL AUTO_INCREMENT,
  `title` varchar(255) NOT NULL DEFAULT '' COMMENT '文章標題',
  `uri` varchar(255) DEFAULT '' COMMENT 'URL',
  `keywords` varchar(2550) DEFAULT '' COMMENT '關鍵詞',
  `summary` varchar(255) DEFAULT '',
  `content` longtext NOT NULL COMMENT '正文',
  `author` varchar(20) DEFAULT '' COMMENT '做者',
  `created` int(10) DEFAULT '0' COMMENT '發佈時間',
  `viewnum` int(10) DEFAULT '0' COMMENT '閱讀次數',
  `status` tinyint(1) DEFAULT '1' COMMENT '狀態: 0草稿,1已發佈',
  PRIMARY KEY (`id`),
  KEY `INDEX_TCVS` (`title`,`created`,`viewnum`,`status`) USING BTREE
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='文章';


CREATE TABLE `user` (
  `id` int(10) NOT NULL AUTO_INCREMENT,
  `phone` varchar(20) NOT NULL DEFAULT '' COMMENT '用戶名',
  `password` varchar(255) NOT NULL DEFAULT '' COMMENT '密碼',
  `created` int(10) DEFAULT NULL COMMENT '註冊時間',
  `changed` int(10) DEFAULT NULL COMMENT '編輯時間',
  `status` tinyint(1) NOT NULL DEFAULT '1' COMMENT '狀態: 0屏蔽,1正常',
  `user_profile_id` int(10) DEFAULT NULL,
  PRIMARY KEY (`id`),
  CONSTRAINT `user_profile_id` FOREIGN KEY (`id`) REFERENCES `user_profile` (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='用戶';



CREATE TABLE `user_profile` (
  `id` int(10) NOT NULL AUTO_INCREMENT,
  `realname` varchar(15) DEFAULT NULL,
  `sex` tinyint(1) DEFAULT '1' COMMENT '1boy,0girl',
  `birth` varchar(20) NOT NULL DEFAULT '' COMMENT '生日',
  `email` varchar(20) DEFAULT NULL,
  `phone` varchar(11) DEFAULT NULL,
  `address` varchar(255) NOT NULL DEFAULT '' COMMENT '地址',
  `hobby` varchar(255) NOT NULL DEFAULT '' COMMENT '愛好',
  `intro` text COMMENT '介紹',
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='用戶詳情';



CREATE TABLE `comment` (
  `id` int(10) NOT NULL AUTO_INCREMENT,
  `article_id` int(10) DEFAULT NULL,
  `nickname` varchar(15) DEFAULT NULL,
  `uri` varchar(255) DEFAULT NULL,
  `content` text,
  `created` int(10) DEFAULT '0',
  `status` tinyint(1) DEFAULT '1' COMMENT '0屏蔽,1正常',
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8 COMMENT='blog評論';

到此,表的設計已經所有完成。能夠根據本身想法,多創建幾個表,如標籤表,文章分類表,相冊分類表

3、Beego中表模型創建

在go語言中,有一個很是強大的struct,能夠自定義和引用;在beego中,咱們的表模型其實就是用struct屬性。

先以article表爲例:

struct裏定義的,就是article表中的字段,以下:

type Article struct {
	Id       int
	Title    string
	Uri      string
	Keywords string
	Summary  string
	Content  string
	Author   string
	Created  int64
	Viewnum  int
	Status   int
}

接下來,我詳細介紹一下。

在models文件夾下創建一個文件:article.go,文件內容以下:

package models

import (
	"time"

	"github.com/astaxie/beego/orm"
	_ "github.com/go-sql-driver/mysql"
)

type Article struct {
	Id       int
	Title    string
	Uri      string
	Keywords string
	Summary  string
	Content  string
	Author   string
	Created  int64
	Viewnum  int
	Status   int
}

func (this *Article) TableName() string {
	return "article"
}

func init() {
	orm.RegisterModel(new(Article))
}

咱們再看一下user模型:在models創建文件,user.go

這裏創建了關聯的表,一對一關係,在beego中表的命名是以駝峯形式命名的,如UserProfile,在數據庫實際上是 user_profile形式存在,會自動以大寫字母分割加下劃線生成表名。

在註冊多表模型的時候,orm.RegisterModel(new(User), new(UserProfile)) 來初始化。

package models

import (
	"fmt"

	"github.com/astaxie/beego/orm"
	"github.com/gogather/com"
)

type User struct {
	Id          int
	Phone       string
	UserProfile *UserProfile `orm:"rel(one)"`
	Password    string
	Status      int
	Created     int64
	Changed     int64
}
type UserProfile struct {
	Id       int
	Realname string
	Sex      int
	Birth    string
	Email    string
	Phone    string
	Address  string
	Hobby    string
	Intro    string
	User     *User `orm:"reverse(one)"`
}

func (this *User) TableName() string {
	return "user"
}
func init() {
	orm.RegisterModel(new(User), new(UserProfile)) //
}

其它表的模型創建和上面的差很少,本身試着創建一下;若是中間報錯,多是一些包或變量未使用,編譯的時候會出錯,這沒事,本身試着會註釋。在保存的時候,bee run會自動檢測出錯誤,你們要學會使用。

最後截圖看看:

 

好的,今天先介紹到這裏,下篇主要完成如下工做:

1.模型裏如何建立方法

 2.  數據庫的引用

 3.  beego的配置文件使用

相關文章
相關標籤/搜索