Mysql
 sql >> Baza danych >  >> RDS >> Mysql

Sequelize:wielokrotna klauzula where

Zakładam, że pytasz o sposób wykonania zapytania przez Sequelize. Nie jestem pewien, czy dobrze rozumiem Twoje pytanie. Szukasz dwóch zapytań:

  • Przeszukuj wszystkie artykuły obserwowanych użytkowników,
  • Zapytaj subskrybowany kraj/tag/artykuł konkretnego użytkownika,

Zacznę od skojarzeń powstałych między modelami.

// 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' });

Za pomocą powyższego powiązania jesteśmy teraz w stanie wyszukać wszystkie artykuły obserwowanych użytkowników

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
});

Powyższe zapytanie wygenerowałoby wynik podobny do

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

Jeśli chcesz zapytać o kraj/tag/artykuł zasubskrybowany przez konkretnego użytkownika, musisz utworzyć kolejne powiązania w Subscribe model

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

Teraz mamy wszystkie powiązania wymagane do wykonania drugiego zapytania, o które prosiłeś

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
});

W tym przykładzie otrzymujesz użytkownika ze wszystkimi jego subskrypcjami dostępnymi przez user.Subscribes , który będzie miał zagnieżdżone atrybuty Tag , Country i Article . Jeśli użytkownik zasubskrybował Tag , oba Country i Article byłoby NULL w tym przypadku.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Czy COUNT(*) zawsze zwraca wynik?

  2. Różnica MySql między dwoma znacznikami czasu w dniach?

  3. Rozwiązywanie problemów Brak takiego pliku lub katalogu podczas uruchamiania aplikacji `php app/console doktryna:schema:create`

  4. Wstaw wartości Array wstawiaj do pojedynczego identyfikatora do bazy danych mysql za pomocą php i PDO

  5. Ocena MySQL z wagą