Typo3 避免在中间表中存储数据时键入3后端工作流

Typo3 避免在中间表中存储数据时键入3后端工作流,typo3,relational-database,extbase,Typo3,Relational Database,Extbase,我的情况如书中所述: 我想将信息存储在中间表中,这是完全不推荐的 以下是上述链接书籍章节警告框中的引用: 不要在涉及域的中间表中存储数据。虽然TYPO3支持这一点(特别是与内联关系记录编辑(IRE)相结合),但这始终是一个迹象,表明可以对域模型进行进一步改进。中间表是并且应该始终是存储关系的工具,而不是其他工具。 假设您要存储一张CD及其包含的音乐曲目:CD--m:n(中间表)--Song。曲目编号可以存储在中间表的字段中。但是,曲目应存储为单独的域对象,并且连接应实现为CD--1:n--

我的情况如书中所述:
我想将信息存储在中间表中,这是完全不推荐的

以下是上述链接书籍章节警告框中的引用:

不要在涉及域的中间表中存储数据。虽然TYPO3支持这一点(特别是与内联关系记录编辑(IRE)相结合),但这始终是一个迹象,表明可以对域模型进行进一步改进。中间表是并且应该始终是存储关系的工具,而不是其他工具。

假设您要存储一张CD及其包含的音乐曲目:
CD--m:n(中间表)--Song
。曲目编号可以存储在中间表的字段中。但是,曲目应存储为单独的域对象,并且连接应实现为
CD--1:n--track--n:1--Song

所以我不想做那些不被推荐的事情。但是考虑到编辑的工作流程,推荐解决方案的结果给我带来了一些问题

为了继续使用此示例,我需要以下表格:

tx_extname_domain_model_cd
tx_extname_domain_model_cd_track_mm
tx_extname_domain_model_track (which holds the track number)
tx_extname_domain_model_track_song_mm
tx_extname_domain_model_song
据我所知,这将在编辑需要创建以下记录的情况下结束:

  • cd
  • 歌曲的一条记录
  • 现在,编辑器可以为
    曲目
    创建一条记录。
    在那里添加了曲目编号。
    此外,还需要分配
    cd
    记录和
    歌曲

下面是我的问题:

  • 我猜这个工作流程不能通过一些(我不知道)TCA设置来改进
  • cd
    记录打开时,编辑无法直接访问
    歌曲

    相反,她/他必须首先打开
    曲目
    记录,然后才能从那里导航到
    歌曲
  • 在中间表中存储数据真的那么糟糕吗?TYPO3表
    sys\u file\u reference
    也一样!但我想知道如何显示这些数据(因为IRE不可能,因为它只能用于
    1:n
    关系()

  • 根据问题的不同,有时中间表是实体,有时不是。在本例中,中间表是曲目,其中包含:[uid、cd、song、track_no,…(定义曲目所需的任何其他内容)]


    定义数据时要小心,不要让数据太高级。

    你要问自己的问题是:我是想按书编码,还是想创建一种务实的方法来解决客户的问题?

    在这个特定的例子中,另一个问题是,最初发明Extbase的人有一个非常复杂和学术的方法,但当涉及到实用的使用和性能时,他们被自己的规则所阻碍,并坚持按书进行编码

    特别是这个例子和警告消息显示了一种思维方式,这是原因之一,为什么我从来没有真正使用Extbase,而是使用核心API方法来创建性能和实用的查询,以获得所需的结果集。现在我们已经有了
    原则
    ,这就像一种魅力,即使是智慧很有异国风味

    当然,
    中间表
    是一个好主意,当然那些
    中间表
    可以而且应该用额外的数据字段来丰富,它们不需要第三、第四或第n个表来存储,即一组简单的下拉选项,因为这可以通过
    属性
    configu轻松处理TCA中的红色,如下所示:

    sys\u file\u reference
    是最突出的例子,因为它提供的正是那种不应该被注入到其他表中的附加信息,猜猜看,TYPO3 core没有使用一行Extbase代码来处理该数据或核心表的几乎任何其他数据

    回答您的最后一个问题:看一看好的旧IRE教程,了解如何使用中间内联表进行m:n连接。

    一般来说,中间表根本不应该存储数据,因此这是本书中的警告。最好的选择是保留中间表,将CD和磁道存储在自定义实体中,并将它们与不包含任何不必要数据的mm表连接起来。@biesior这只回答了我的第三个问题。你能给我其他两个方面的提示吗问题?