当前位置: 首页 > 知识库问答 >
问题:

类型3-扩展开发-模型之间的关系

连曜灿
2023-03-14

仅供参考,我是一个TYPO3菜鸟:)我在我的TYPO3个人网站上做我自己的extbase/流体扩展来管理画廊。现在,我下面这个留档:开发与Extbase和流体TYPO3扩展

目前,我只在Domain/Model中构建了2个类:

  • 加利。php

变量已设置,getter/setter也已设置。

我很清楚我需要在一段关系中把两者联系起来(“1: n”?)但是我不使用扩展生成器,我想自己理解如何做到这一点。我想我必须编辑Gallery.php模型来解释我想实现的关系是什么,但不明白如何实现。

有什么帮助吗?

共有3个答案

巫墨一
2023-03-14

也许博客的例子可以帮助建立关系:通过博客的例子进行一次旅行。https://docs.typo3.org/typo3cms/ExtbaseFluidBook/3-BlogExample/Index.html

乐正翰
2023-03-14

你已经得到了一些很好的答案。

附加要点(用于编制幻灯片扩展):

  • 您可能希望在图片中使用FileReference类型的属性。您也可以在extension_builder中选择该选项。然后,您的模型可能包含以下内容:

图片模型。php:

/**
 * @var \TYPO3\CMS\Extbase\Domain\Model\FileReference
 * @cascade remove
 */    
 protected $image = null;
  • 如果您使用1: n用于图库/图片,这意味着您的图像一次只能在一个图库中。不必要的限制。我建议使用m: n(但这实际上是一个通用的数据库建模问题)。
  • 对于m: n,您需要一个额外的关系表(按照惯例称为类似tx_slideshow_gallery_picture_mm)。让extension_builder为你创造它肯定更容易。您至少需要手动更改数据库模型(ext_tables.sql)、模型和TCA。尤其是TCA从头开始写有点棘手。

示例TCA:

'picture' => [
                'exclude' => true,
                'label' => 'LLL:EXT:uniolslideshow/Resources/Private/Language/locallang_db.xlf:tx_uniolslideshow_domain_model_gallery.picture',
                'config' => [
                            'type' => 'select',
                            'renderType' => 'selectMultipleSideBySide',
                            'foreign_table' => 'tx_uniolslideshow_domain_model_picture',
                            'MM' => 'tx_uniolslideshow_gallery_picture_mm',
                            'size' => 10,
                            'autoSizeMax' => 30,
                            'maxitems' => 9999,
                            'multiple' => 0,
                            'wizards' => [
                                // the fun starts here ...
  • 稍后,您可能会决定甚至不需要额外的Picture类,只需要使用文件引用列表。。。但出于教育目的,我建议遵循您最初的方法
夹谷弘亮
2023-03-14

了解如何执行此操作的一个好方法是使用扩展生成器创建扩展,然后读取生成的代码。

如果您想自己添加关系,则需要编辑ext\u表。sql并将列添加到TCA和模型中。读一下你提到的那本书的第六章,你会发现该怎么做。

 类似资料:
  • 模型(Model)之间存在各种各样的关系,如:一对一(One-To-One )、一对多(One-To-Many)等。模型间的关系本质上是对其代表的数据库中表之间的关系描述,通过这些关系可以实现数据库中表之间主/外键约束的创建。查询时也可以基于这些关系,生成在数据库中执行的连接查询或复合查询SQL语句。 关系/关联的使用 1.1 一对一(One-To-One)关联 1.2 一对多(One-To-Ma

  • 为什么要扩展mongoose模型? 我们对业务进行分层处理 service(多模型操作) -> dao(单一模型操作) -> model(模型定义) 所以我们在dao层需要很多单一模型的数据库操作方法的封装,如果业务非常复杂,比如一个超级查询方法,然后又有各种具体业务定义方法,难道我们一个一个的都写在dao层么? 事实上dao只做暴露给service的方法,而具有一定业务约定的方法是可以放到mo

  • 你好打字专家们, 有人可以解释为什么下面的代码在第 16 行给我一个错误,而不是在第 13 行给我一个错误。这是预期功能还是缺少功能? 密码 游乐场链接

  • 我有3个模型:用户、宠物和诊所。 让我们假设表格:用户、宠物和诊所。关系是,一个用户可以有多个宠物,而一个宠物只有一个诊所。 在“Pets”表中,我有一个FK到用户id,另一个FK到诊所id。 我想做一些类似的事情: 在用户模型上,返回与用户关联的所有不同诊所。现在我只能做: 但我只想返回不同的诊所。 用户模态: 宠物模式: 有什么建议吗?

  • 目前,我有多个运行Apollo的GraphQL服务,并创建了一个“网关”服务,该服务使用远程模式拼接,以便为我提供一个单一的访问endpoint。 在我的网关服务中,我希望扩展远程类型,以便在缝合的架构之间创建引用。 然而,我似乎得到了以下错误: GraphQLError:无法扩展类型"User",因为它不存在于现有架构中。 我进行了双重检查,并且类型“User”和“Profile”存在,我可以从