GORM是否支持使用SQL的IIF函数?
P粉547362845
P粉547362845 2023-09-01 16:06:17
[MySQL讨论组]
<p>我有一个用于作业的表,一个用于解决方案的表,还有一个用于学生的表。 我想检索所有的作业,并且对于每个作业,我想添加一个“标志”,显示当前登录的学生是否尝试过该作业。</p> <p>我尝试了这个:</p> <pre class="brush:golang;toolbar:false;">import ( &quot;fmt&quot; &quot;gorm.io/gorm&quot; &quot;encoding/json&quot; &quot;github.com/my_organisation/myorg-repo/db&quot; ) var database *gorm.DB var solutions []db.Solution var listOfAsnmtIDs []uint func myfuncn (w http.ResponseWriter, r *http.Request){ //... _ = database.Table(&quot;solutions&quot;).Where(&quot;pupil_id = ?&quot;, pupil.ID).Select(&quot;assignment_id&quot;).Find(&amp;solutions) for _, solution := range solutions { listOfAsnmtIDs = append(listOfAsnmtIDs, solution.AssignmentID) } response := database.Table(&quot;assignments&quot;).Select(`id, created_at, IIF((id IN ?), 'attempted', 'Not attempted') as attempted`, listOfAsnmtIDs).Find(&amp;allAssignments) if response.RowsAffected &lt; 1 { respondToClient(w, 404, nil, &quot;No assignments found&quot;) return } //... } </pre></p>
P粉547362845
P粉547362845

全部回复(1)
P粉718730956

您只需要列出参数。类似于这样

    var mad string
    for i, solution := range solutions {
        mad += strconv.FormatUint(uint64(solution.AssignmentID), 10)
        if i != len(solutions) {
            mad += ","
        }
        listOfAsnmtIDs = append(listOfAsnmtIDs, solution.AssignmentID)
    }

    response := database.Table("assignments").Select(`id, created_at, IIF((id IN ?), 'attempted', 'Not attempted') as attempted`, mad).Find(&allAssignments)
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习
PHP中文网抖音号
发现有趣的

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号