mysql - 如何根据关系条件检索数据
问题描述
我有一个具有 OneToMany 关系的产品和图像实体,其中一个产品可以有许多图像。
但是可以删除图像。我没有从表中删除数据,而是禁用它添加一个名为“已删除”的布尔列。然后如果产品图片被删除,查询将返回没有图片的产品。
当产品有图像时,我进行了下一个可以正常工作的查询,但是如果图像已被删除,我不知道如何忽略该图像。
** 我的查询 **
const [ products, count ] = await this.productRepo
.createQueryBuilder('product')
.innerJoinAndSelect('product.images', 'image')
.where([{ name: Like(`%${terms}%`) }, { description: Like(`%${terms}%`) }, { code: Like(terms) }])
.orderBy('product.' + params.orderBy, params.orderMode)
.offset(params.skip)
.limit(params.take)
.getManyAndCount()
return { products, count }
** 图像实体 **
@Entity()
export class Image extends BaseEntity {
@Column()
name: string
@Column({ default: false })
deleted: boolean
@ManyToOne(() => Product, product => product.images) product: Product[];
}
** 产品实体 **
export class Product extends BaseEntity {
@Column({ length: 20 })
code: string
@OneToMany(() => Image, image => image.product) images: Image[]
}
解决方案
我在 where 子句中没有看到对新删除列的任何引用。我希望像 { deleted: value } 这样的东西会出现在查询中。
.where([{ name: Like(`%${terms}%`) }, { description: Like(`%${terms}%`) }, { code: Like(terms) }])
推荐阅读
- ruby-on-rails - 如何有效地生成 OAuth 令牌
- c++ - 使用带有 fstream 的映射的 Segfault
- kubernetes - Azure DevOps > Helm > Azure Kubernetes 部署 - 删除部署时删除 Azure 文件共享
- c# - 使额外的大括号触发编译器警告错误 C#
- laravel - Laravel 授权可以访客
- jboss - 无法通过远程访问将 jboss 6.1 连接到 jconsole
- webview - Youtube 视频未在 WebView 中加载
- javascript - Vuex - 多次分派后运行功能
- javascript - 如何将 javascript 变量从单独的 Javascript 文件放入 HTML 表中?
- javascript - 达到角度插值的嵌套变量