Mysql
 sql >> база данни >  >> RDS >> Mysql

Sequelize:многократна клауза where

Предполагам, че питате за начина на Sequelize за извършване на заявката. Не съм сигурен дали разбирам въпроса ви правилно. Търсите две заявки:

  • Запитване за всички статии на следвани потребители,
  • Запитване за абонирана държава/маркировка/статия на конкретен потребител,

Нека започна с асоциациите, направени между моделите.

// in User model definition
User.belongsToMany(User, { as: 'Followers', through: 'Followers', foreignKey: 'userId', otherKey: 'followId' });
User.hasMany(Subscribe, { foreignKey: 'userId' });
User.hasMany(Article, { foreignKey: 'userId' });

С използването на горната асоциация вече сме в състояние да правим запитвания за всички статии на следвани потребители

models.User.findByPrimary(1, {
    include: [
        {
            model: models.User,
            as: 'Followers',
            include: [ models.Article ]
        }
    ]
}).then(function(user){
    // here you have user with his followers and their articles
});

Горната заявка би генерирала резултат, подобен на

{
    id: 1,
    Followers: [
        {
            id: 4,
            Articles: [
                {
                    id: 1,
                    title: 'article title' // some example field of Article model
                }
            ]
        }
    ]
}

Ако искате да направите заявка за държава/таг/статия, абонирана от конкретен потребител, ще трябва да направите други асоциации в Subscribe модел

// in Subscribe model definition
Subscribe.belongsTo(Tag, { foreignKey: 'tagId' });
Subscribe.belongsTo(Article, { foreignKey: 'articleId' });
Subscribe.belongsTo(Country, { foreignKey: 'payId' });

Сега имаме всички асоциации, необходими за изпълнение на втората заявка, която поискахте

models.User.findByPrimary(1, {
    include: [
        {
            model: models.Subscribe,
            include: [ models.Tag, models.Country, models.Article ]
        }
    ]
}).then(function(user){
    // here you get user with his subscriptions
});

В този пример получавате потребител с всичките му абонаменти, достъпни чрез user.Subscribes , който ще има вложени атрибути Tag , Country и Article . Ако потребителят се е абонирал за Tag , и двете Country и Article ще бъде NULL в този случай.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Mysql има ли еквивалент на @@ROWCOUNT като в mssql?

  2. Как да използвам масив от стойности от PHP в клаузата 'IN' на mysql заявката?

  3. Как да конвертирате UTC дата в местна часова зона в MySql Изберете заявка

  4. com.mysql.jdbc.exceptions.jdbc4.MySQLNonTransientConnectionException:Не са разрешени операции след затваряне на връзката

  5. Как да получите достъп до MySQL от отдалечен компютър (не localhost)?