2017-07-08 144 views
0

「失蹤目的地名」結構的標籤我有這樣一個模型:SQLX通過指針

type Course struct { 
    Name string `db:"course_name"` 
} 

type Group struct { 
    Course *Course 
} 
type Groups []Group 

,當我嘗試做sqlx.Select團體用餐,像這樣的查詢:

SELECT c.name as course_name FROM courses as c; 

我得到

缺少* main.Groups

0123目的地名稱COURSE_NAME

錯誤。

這段代碼有什麼問題?

回答

0

當您選擇多行並希望將結果掃描到切片中時,您需要使用sqlx.Select,如查詢所示,否則使用sqlx.Get作爲單行。

此外,你不能直接,因爲沒有它的字段的標籤(不像Course結構),以及Course場不嵌入掃描成Group結構。

嘗試:

course := Course{} 
courses := []Course{} 

db.Get(&course, "SELECT name AS course_name FROM courses LIMIT 1") 
db.Select(&courses, "SELECT name AS course_name FROM courses") 
+0

當然,我做Sqlx.Select - 這是一個排字錯誤 – evocatus

+0

你的代碼與課程和課程的作品。 – evocatus

+0

只要不存在歧義,您不需要標記每個字段以便與sqlx一起使用。我仍然不明白爲什麼我的代碼(在問題中)不起作用。 Sqlx不能通過指針讀取結構標籤? Sqlx無法通過指針將值掃描到結構中? – evocatus

0

我改變Course *CourseCourse Course - 沒有影響。 當我做到了嵌入這樣的:

type Group struct { 
    Course 
} 

它的工作。

這也是正確的:

type Group struct { 
    *Course 
} 

看起來SQLX不明白,只是嵌入式領域的任何事情。