lev*_*per 5 sql operators typescript typeorm
我在typeorm文档或源代码中都找不到OR运算符的任何概念。它完全支持吗?
我正在尝试使用存储库执行基本搜索。
db.getRepository(MyModel).find({
name : "john",
lastName: "doe"
})
Run Code Online (Sandbox Code Playgroud)
我知道这会生成一个AND操作,但是我需要一个OR操作,因此sql看起来像:
name='john' OR lastName='doe'
Run Code Online (Sandbox Code Playgroud)
我是否被迫使用查询构建器来进行类似这样的基本操作?
Pra*_*sad 45
db.getRepository(MyModel).find({
where:[
{name:"john"},
{lastName: "doe"}
]
})
Run Code Online (Sandbox Code Playgroud)
将数组传递给 where
Seg*_*ess 17
您可以通过执行以下操作将“OR”子句与附加“AND”结合起来。
db.getRepository(MyModel).find({
where: [
{ name: "john", lastName: "doe" },
{ age: 20 }
]
})
Run Code Online (Sandbox Code Playgroud)
这将导致
select * from model where (name = "john" and lastname = "doe") OR age = 20
Run Code Online (Sandbox Code Playgroud)
希望这可以帮助。
Jav*_*ian 14
我遇到了同样的问题,但我使用QueryBuilder解决了这个问题。
这就是一个例子。
return await getRepository(MyModel)
.createQueryBuilder()
.where("name = :name OR lastName = :lastName", {
name: "john",
lastName: "doe"
})
.getMany();
Run Code Online (Sandbox Code Playgroud)
van*_*102 10
要OR在 中使用sub-clause,我必须重复main-clause
userRepository.find({
where: [
{
firstName: 'Timber',
lastName: 'Saw',
project: {
name: 'TypeORM',
},
},
{
firstName: 'Timber',
lastName: 'Saw',
project: {
initials: 'TORM',
},
},
],
});
Run Code Online (Sandbox Code Playgroud)
查找所有Timber Saw带有name = "TypeORM" 或 的项目initials = "TORM"