我可以在TypeOrm多对多连接表中使用额外的字段吗

问题描述 投票:0回答:1

我有两个表:Painting 和 Exhibit,表为 Painting 和 Exhibit,其多对多关系由 Exhibition_paintings 表处理 - id、paintingId、exhibitId。

因为绘画可以有一个展览独有的价格,所以我想在 Exhibition_painting 表中使用一个额外的字段 - Exhibitionpaintingprice。如何在 nextjs 页面上访问该字段?

我应该如何更改这个原本成功的代码?

这两条线将产生一个画作集,没有展览画作价格。

  const exhibitRepository = AppDataSource.getRepository(Exhibit);
  const exhibit = await exhibitRepository.findOne({
    where: { id: exhibitid },
    relations: ["gallery", "paintings"],
  });
  return exhibit;
} 

映射集合的表体:

                  <>
                    {exhibit.paintings ? (
                      exhibit.paintings.map((painting) => {
                        const exhibitpainting = painting.exhibitRelations;

                        return (
                          <tr key={painting.id}>
                            <td>{painting.id}</td>
                            <td>
                              <Image
                                src={painting.picture}
                                alt={painting.title}
                                width={100}
                                height={100}
                              />
                            </td>
                            <td>
                              <Link href={`/painting?id=${painting.id}`}>
                                {painting.title}
                              </Link>
                            </td>
                            <td>{painting.description}</td>
                            <td>Exhibit note</td>
                            <td>{painting.media}</td>
                            <td>
                              {painting.height}h x {painting.width}w x .5d
                            </td>
                            <td>{painting.price}</td>
**<td>ExhibitPaintingPrice: {??????????????}</td>**
                          </tr>
                        );
                      })
                    ) : (
                      <tr>
                        <td colSpan={7}>No paintings</td>
                      </tr>
                    )}
                  </>

我试过了

                            <td>
                              {painting.exhibitRelations?.exhibitpaintingprice}
                            </td>

生成此错误: - 错误 TypeError:无法读取未定义的属性(读取“joinColumns”)

many-to-many entity typeorm
1个回答
0
投票

您必须自己创建一个单独的表,而不是依赖 TypeORM 提供的连接表。

创建另一个实体

ExhibitPaintings
并为每个 id 添加两个主列。然后向每个表添加 ManyToOne 装饰器,并将连接列指定为您刚刚创建的主列。 然后你的多对多表就准备好了。现在,您可以向此表添加任何自定义列,并且可以使用 QuerySelector 或仅通过 EntityManager 进行查询。 这是 GitHub 讨论,希望对您有所帮助。 https://github.com/typeorm/typeorm/issues/2402

© www.soinside.com 2019 - 2024. All rights reserved.