1
Hello, I want to do a search within several tables, for example:
SELECT * from tab1 
    INNER JOIN tab2 ON tab1.tab2_id = tab2.id 
    WHERE tab1.name LIKE '%blabla%' or tab2.title 
    LIKE '%blablabla%'
How would this query with Sequelize?
1
Hello, I want to do a search within several tables, for example:
SELECT * from tab1 
    INNER JOIN tab2 ON tab1.tab2_id = tab2.id 
    WHERE tab1.name LIKE '%blabla%' or tab2.title 
    LIKE '%blablabla%'
How would this query with Sequelize?
2
I’ll put it in context with the models:
const Tab1 = sequelize.define('tab1', {
  name: sequelize.STRING,
  tab2_id: sequelize.INTEGER
})
const Tab2 = sequelize.define('tab2', {
  title: sequelize.STRING
})
// relacionamento
Tab1.belongsTo(Tab2, {
  foreignKey: 'tab2_id'
})
Now the query itself where the $OR is performed with the two tables:
return Tab1.findAll({
  where: {
    $or: [
      {
        name: {
            $like: '%blabla%'
        }
      },
      ['\`Tab2\`.\`title\`) LIKE ?', '%blablabla%'] // aqui é o macete
    ]
  },
  include: [
    Tab2
  ]
})
Sequelize does not deliver this kind of detail in the documentation but it is very customizable, has several ways to do the same, more or less to the letter.
0
After modeling your tables, use the syntax include, in accordance with documentation.
Browser other questions tagged mysql node.js sequelize-js
You are not signed in. Login or sign up in order to post.