2017-07-08 82 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不明白,只是嵌入式领域的任何事情。