我有一个
Duel
类型,每个Duel
都有一个玩家列表。
这是我的查询和关系:
const duel = Duel.findByPk(id, {
include: duelRelations,
});
const duelRelations = [{
model: User,
as: 'players',
include: [{
model: DuelPokemon,
required: false,
as: 'duelPokemons',
}],
}, {
model: DuelActionLog,
required: false,
as: 'logs',
}];
关系:
// Each duel has many users
Duel.hasMany(User, {
foreignKey: 'duel_id',
as: 'players',
});
我想获取按
players
表的 createdAt
字段排序的 duel_players
数组。
我尝试了不同的 order
值组合,但没有任何效果。不知道如何定义。
有什么想法吗?
谢谢
sequelize.col()
来指定连接表中要在 order
选项的 findByPk
属性中排序的列。每个按条目排序都是一个由两部分组成的数组(列,然后是顺序),您可以传入多个条目以按多列排序。
我将
duelRelations
移至选项中以使其更易于阅读。在您的示例中,您将 User
别名为 players
,将 DuelPokemon
别名为 duelPokemons
。请注意,您需要为每个 Model
定义这些关联。您的问题提到了 duel_players
,这在您的示例中不存在,但我认为您的意思是说 players.createdAt
。
const duel = Duel.findByPk(id, {
include: [
{
model: User,
as: 'players',
include: { // can be an object to include single table
model: DuelPokemon,
required: false,
as: 'duelPokemons',
},
},
{
model: DuelActionLog,
required: false,
as: 'logs',
},
],
order: [[sequelize.col('players.createdAt'), 'DESC']],
});