如何在不使用 queryBuilder 的情况下更新 table 上的许多字段?
How to update many fields on a table without using queryBuilder?
我想更新 table“Returns”的许多字段,此方法将接收一个整数数组,表示 Return 寄存器的 ID 和要更新的值这注册
Ej: ( [1,2,3,4], "新值" )
通常我使用这种查询
await this.returnRepository.update(id, { shipment_id:'SomeValue' })
问题是,在这种特殊情况下,我需要更新许多 ID,如果我使用该语法提供 ID 数组,则不起作用
为了解决这个问题,我使用带有此代码的 querybuilder
await this.returnRepository.createQueryBuilder()
.update(ReturnEntity).set({ shipment_id: shipmentId })
.where("return_id IN(:...id)", { id: returnIds })
.execute()
问题:
1.- 我知道第二种查询形式的名称是 QUERY BUILDER,第一种形式的名称是什么?我试图搜索 'typeorm query' 但没有给我太多相关信息。
2.-是否可以将此查询生成器转换为第一个选项?会怎样?
谢谢!
您可以使用 typeorm
提供的 In
运算符
import { In } from 'typeorm';
await this.returnRepository.update(
{ id: In([1, 2, 3, 4]) },
{ shipment_id:'SomeValue' }
)
- 来自 Repository 的 TypeORM 文档:
Repository
is just like EntityManager
but its operations are limited to a concrete entity.
基本上,save()
、insert()
、update()
、delete()
等功能由存储库 class 提供,让您轻松 access/update实体。
当您使用存储库时,功能仅限于存储库实体。
存储库与查询生成器:
简而言之,QueryBuilder
API 为您提供了一系列强大的方法,可用于创建高级 SQL
查询,而 Repository
API 使您可以访问更易于使用的基本功能。
- 是的,可以将您的 QueryBuilder 更新查询转换为存储库查询。
为此,您可以使用 TypeORM 提供的 In
运算符。
您可以这样做:
import { In } from 'typeorm';
await this.returnRepository.update(
{id: In([1, 2, 3, 4])},
{shipment_id:'SomeValue'}
);
此处,In
运算符已从 typeorm 导入并采用值数组。
当你 运行 这个时,它会生成一个 SQL 像这样的查询(部分):
SET "shipment_id" = 'SomeValue' WHERE "id" IN (1,2,3,4)
它属于高级选项。您可以阅读有关 TypeORM advanced options here.
的更多信息
我希望这能回答你的问题。
外部链接:
我想更新 table“Returns”的许多字段,此方法将接收一个整数数组,表示 Return 寄存器的 ID 和要更新的值这注册
Ej: ( [1,2,3,4], "新值" )
通常我使用这种查询
await this.returnRepository.update(id, { shipment_id:'SomeValue' })
问题是,在这种特殊情况下,我需要更新许多 ID,如果我使用该语法提供 ID 数组,则不起作用
为了解决这个问题,我使用带有此代码的 querybuilder
await this.returnRepository.createQueryBuilder()
.update(ReturnEntity).set({ shipment_id: shipmentId })
.where("return_id IN(:...id)", { id: returnIds })
.execute()
问题:
1.- 我知道第二种查询形式的名称是 QUERY BUILDER,第一种形式的名称是什么?我试图搜索 'typeorm query' 但没有给我太多相关信息。
2.-是否可以将此查询生成器转换为第一个选项?会怎样?
谢谢!
您可以使用 typeorm
In
运算符
import { In } from 'typeorm';
await this.returnRepository.update(
{ id: In([1, 2, 3, 4]) },
{ shipment_id:'SomeValue' }
)
- 来自 Repository 的 TypeORM 文档:
Repository
is just likeEntityManager
but its operations are limited to a concrete entity.
基本上,save()
、insert()
、update()
、delete()
等功能由存储库 class 提供,让您轻松 access/update实体。
当您使用存储库时,功能仅限于存储库实体。
存储库与查询生成器:
简而言之,QueryBuilder
API 为您提供了一系列强大的方法,可用于创建高级 SQL
查询,而 Repository
API 使您可以访问更易于使用的基本功能。
- 是的,可以将您的 QueryBuilder 更新查询转换为存储库查询。
为此,您可以使用 TypeORM 提供的 In
运算符。
您可以这样做:
import { In } from 'typeorm';
await this.returnRepository.update(
{id: In([1, 2, 3, 4])},
{shipment_id:'SomeValue'}
);
此处,In
运算符已从 typeorm 导入并采用值数组。
当你 运行 这个时,它会生成一个 SQL 像这样的查询(部分):
SET "shipment_id" = 'SomeValue' WHERE "id" IN (1,2,3,4)
它属于高级选项。您可以阅读有关 TypeORM advanced options here.
的更多信息我希望这能回答你的问题。
外部链接: