Есть ли способ в Sequelize включить таблицу без использования "Отец" ПК? - PullRequest
0 голосов
/ 05 июля 2019

Я пытаюсь создать ВНУТРЕННЕЕ СОЕДИНЕНИЕ из Places и Rate, но я хочу установить "пользовательское" предложение ON.Связь между ними существует.

Place модель имеет атрибут @ForeignKey(() => Rate) выше атрибута "rate_code", а модель Rate имеет атрибут @ForeignKey(() => Place) выше атрибута "rate_code" (этот атрибут индексируется и НЕТТаблица PK) Кроме того, всякий раз, когда я делаю Place.findAll, включая Rate , Sequelize генерирует запрос, подобный SELECT ... FROM Place INNER JOIN Rate ON Place.id = Rate.rate_code

Обе модели включают PK, который не показан в модели, ноавтоматически генерируется,

модель / Place.ts

@Table
export class Place extends BaseModel<Place> {

  @Column({
    type: DataType.STRING,
    allowNull: true,
    defaultValue: null
  })
  name: string;

  @ForeignKey(() => Rate)
  @Column
  rate_code: string;

  @HasMany(() => Rate)
  rate: Rate[];
}

модель / Rate.ts

@Table
export class Rate extends BaseModel<Rate> {

  @Column({
    type: DataType.STRING,
    allowNull: true,
    defaultValue: null
  })
  name: string;

  @ForeignKey(() => Place)
  @Column({
    type: DataType.STRING(10),
    allowNull: true,
    defaultValue: null
  })
  rate_code: string;

}

ЭтоВот как я генерирую свой запрос Sequelize: Service.ts

Place.findAll({
      attributes: ['name', 'rate_code'],
      include: [
        {
          model: Rate,
          required: true,
          attributes: ['name', 'rate_code'],
        }
      ]
    })

Ожидание:

SELECT 
Place.name, 
Place.rate_code,
Rate.name, 
Rate.rate_code
FROM Place
INNER JOIN Rate ON Place.rate_code = Rate.rate_code;

Реальность:

SELECT 
Place.name, 
Place.rate_code,
Rate.name, 
Rate.rate_code
FROM Place
INNER JOIN Rate ON Place.id = Rate.rate_code;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...