gorm 中left join的使用

使用mysql語句執行時可以執行成功,但是使用go語言編程保存到struct中時出現問題。

代碼如下:

sflog.Debug("QueryByTaskId ", id)

    type Data struct {
        TaskId          int64   `json:"taskId"`
        VehicleName     string  `json:"vehicleName"`
        VehicleElec     float64 `json:"vehicleElec"`
        VehicleNumber   string  `json:"vehicleNumber"`
        VehicleLocation int64   `json:"vehicleLocation"`
        VehicleStatus   int     `json:"vehicleStatus"`
    }
    var datas []Data

    joinQuery := mu.DB.Table("job j").Select("j.business_id AS taskId, a.name AS vehicleName, s.battery AS vehicleElec, j.agv_serial_no AS vehicleNumber, s.node_id AS vehicleLocation, s.state AS vehicleStatus").
        Joins("LEFT join agv a on a.serial_no = j.agv_serial_no").
        Joins("LEFT JOIN agv_state s on s.business_id = a.agv_state_id").
        Where("j.business_id=?", id)

    if err = joinQuery.Debug().Find(&datas).Error; err != nil {
        sflog.Errorf("query job table err:%v ", err.Error())
    }
    sflog.Debug("datas: ", datas)
 
執行語句後datas是null的。後面改爲這個語句,執行ok
 
    joinQuery := mu.DB.Table("job j").Select("j.business_id AS task_id, a.name AS vehicle_name, s.battery AS vehicle_elec, j.agv_serial_no AS vehicle_number, s.node_id AS vehicle_location, s.state AS vehicle_status").
        Joins("LEFT join agv a on a.serial_no = j.agv_serial_no").
        Joins("LEFT JOIN agv_state s on s.business_id = a.agv_state_id").
        Where("j.business_id=?", id)
 
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章