日モデル:
dayNumber: {
type: Sequelize.INTEGER,
primaryKey: true
},
dayDate: {
type: Sequelize.DATE
},
status: {
type: Sequelize.INTEGER
},
traineeId: {
type: Sequelize.INTEGER,
primaryKey: true
},
workoutId: {
type: Sequelize.INTEGER,
}
WorkoutsExercisesモデル:
exercise_name: {
type: Sequelize.INTEGER,
primaryKey: true
},
workout_id: {
type: Sequelize.DATE,
primaryKey: true
},
coach_id: {
type: Sequelize.INTEGER,
primaryKey: true
}
2つのテーブルを内部結合して、毎日のすべてのエクササイズを返したいだけです。次を使用します。
const Days = require('../models/days');
const WorkoutsExercises = require('../models/workoutsExercises');
Days.findAll({
include: [{
model: WorkoutsExercises,
required: true
}]
})
そして、この関数は次のクエリを返します。
SELECT
`day`.`dayNumber`, `day`.`dayDate`,`day`.`status`, `day`.`traineeId`, `day`.`workoutId`,
`workoutsExercises`.`exercise_name` AS `workoutsExercises.exercise_name`,
`workoutsExercises`.`workout_id` AS `workoutsExercises.workout_id`,
`workoutsExercises`.`coach_id` AS `workoutsExercises.coach_id`
FROM `days` AS `day`
INNER JOIN `workoutsExercises` AS `workoutsExercises` ON `day`.`dayNumber` = `workoutsExercises`.`workout_id`;
どのように私は(から条件に変更することができますday
。dayNumber
)に(day
。workoutId
)
関係は次のようになります
WorkoutExercises.hasMany(Day, {foreignKey: 'workout_id'})
Day.belongsTo(WorkoutExercises, {foreignKey: 'workout_id', targetKey: 'workout_id'})
ターゲットキーはON句を変更するものであり、クエリは次のようになります。
Days.findAll({
include: [{
model: WorkoutsExercises,
required: true
}]
})
これは:
SELECT
`day`.`dayNumber`, `day`.`dayDate`,`day`.`status`, `day`.`traineeId`,
`day`.`workoutId`,
workoutsExercises
。exercise_name
AS workoutsExercises.exercise_name
、workoutsExercises
。workout_id
AS workoutsExercises.workout_id
、workoutsExercises
。coach_id
なのでworkoutsExercises.coach_id
FROM `days` AS `day`
INNER JOIN `workoutsExercises` AS `workoutsExercises` ON
`day`.`workout_id` = `workoutsExercises`.`workout_id`;
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加