Order API似乎不适用于v2中的原始查询,但使用SQL时排序是可以的。下面的代码在gorm v1和v2中的工作方式不同。
sql := getSql()
params := getParams()
rows, err := db.Order("-forder.source_created_time").Raw(sql, params...)
登录v2:
SELECT forder.*
FROM sparrow_fullorder_fullorder forder
JOIN sparrow_orders_order o ON o.id=forder.source_order_id
WHERE forder.source = 'online' AND
forder.user_id = 'c88685f78cee4631b0b879583a5ad1f6' AND
forder.deleted = 0
UNION ALL
SELECT forder.*
FROM sparrow_fullorder_fullorder forder
JOIN sparrow_cash_dinningorder do ON do.id=forder.source_order_id
WHERE forder.source = 'dinning' AND
forder.user_id = 'c88685f78cee4631b0b879583a5ad1f6' AND
forder.deleted = 0
登录v1:
SELECT forder.*
FROM sparrow_fullorder_fullorder forder
JOIN sparrow_orders_order o ON o.id=forder.source_order_id
WHERE forder.source = 'online' AND
forder.user_id = 'c88685f78cee4631b0b879583a5ad1f6' AND
forder.deleted = 0
UNION ALL
SELECT forder.*
FROM sparrow_fullorder_fullorder forder
JOIN sparrow_cash_dinningorder do ON do.id=forder.source_order_id
WHERE forder.source = 'dinning' AND
forder.user_id = 'c88685f78cee4631b0b879583a5ad1f6' AND
forder.deleted = 0
ORDER BY -source_created_time
但是如果使用
sql += ` ORDER BY -forder.source_created_time`
它在v2:中工作
SELECT forder.*
FROM sparrow_fullorder_fullorder forder
JOIN sparrow_orders_order o ON o.id=forder.source_order_id
WHERE forder.source = 'online' AND
forder.user_id = 'c88685f78cee4631b0b879583a5ad1f6' AND
forder.deleted = 0
UNION ALL
SELECT forder.*
FROM sparrow_fullorder_fullorder forder
JOIN sparrow_cash_dinningorder do ON do.id=forder.source_order_id
WHERE forder.source = 'dinning' AND
forder.user_id = 'c88685f78cee4631b0b879583a5ad1f6' AND
forder.deleted = 0
ORDER BY -forder.source_created_time
谁能帮我?非常感谢。
我认为Gorm v2不起作用的原因是他们为了这个目的而更改了它。
当我们进行raw时,这意味着我们试图自己编写一个完整的查询。CCD_ 1是不清楚和无用的。