beego 中使用關聯查詢( join 查詢)

來源:互聯網
上載者:User

beego 中使用關聯查詢( join 查詢)

  1. 文檔所在網址:這裡
//使用執行個體:article:=new(Article)num,err:= o.QueryTable("go_article").RelatedSel().All(&article)
  1. 但直接使用 RelatedSel() 是不行,還必須先在 model中定義:
type User struct {    Id int    Name string    Age int}type Article stuct {    Id int    Title string    Content string    User *User `orm:"rel(fk)"` //這樣寫,預設在Article中應該有一個user_id的欄位,如果沒有,通過beego自動建表的話,它會產生;如果是手動建表,記得把user_id 這個欄位加上去}

定義表欄位為"rel(fk)",即外鍵,要定義其它類型的,請看文檔。

  1. 命令列自動建表:
orm.RunCommand()  //main函數或init函數中需要加這行代碼,否則不能自動建表
go build main.go #先在命令列中執行這句,會產生main.exe檔案./main orm syncdb -h #-h會提示可用的參數./main orm syncdb -v #建表的同時會顯示建表的sql語句

如果使用自動建表,建議不要像上邊一樣直接寫int,string,具體欄位欄位的方法,見 文檔

其實我使用命令列建表最主要的目的是想知道 Article 中的 User 會產生什麼欄位名,結果就是 user_id,且與你 User 對應表名的首碼沒有關係

  1. 疑問:

4.1 RelatedSel()可以選擇“欄位名” RelatedSel("user") 其實只是選擇“表名”(實際也不是表名,而是 struct 中對應欄位的小寫),只有當一個 model 中使用了多個 rel 欄位的時候才有意義。但怎麼選擇關聯的 user 表中的指定欄位?

4.2 RelatedSel()預設應該是 inner join,但我希望是 left join ,應該怎麼寫?

4.3 我想看到每次執行資料庫操作時使用的 sql 語句,怎麼查看?

  1. 一點感慨:

個人覺得 beego 內建的 orm 其實挺不好用的,有些概念也很不理解。
作為一個經常寫 ThinkPHP 3.2 的碼農,使用其它架構的 orm 的時候真的覺得太麻煩。
但話說 orm 到底有什麼優勢?其實我是一直不理解的,tp3.2 操作資料庫的方法真正好用的不是它的 orm,而是它的連貫操作寫起來真的很舒服。

其實 beego 的作者也做過一個獨立的 orm 用法和 tp3.2 也還是有點像的。

但 github 中能搜到了 star 最多的 go orm 應該是 gorm ,看文檔,發現它的用法其實與 tp3.2 的挺像的,我還是比較推薦使用 gorm 的。

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.