Database TYPO3 Extbase中的内部联接

Database TYPO3 Extbase中的内部联接,database,orm,inner-join,typo3,Database,Orm,Inner Join,Typo3,我有两个表TableA和TableB。必须在条件TableA.Pid=TableB.Uid下将它们连接在一起 表的域对象是在使用扩展生成器构建扩展时创建的 如何在TYPO3中实现这一点 简短回答:对于字段pid,您不能突然这样做pid是pages表的保留标识符,不能自由使用。此外,在MVC方案中,内部连接的概念并没有这样实现。不幸的是,伊姆霍。在过去,到处乱搞是很容易的 对于新手来说,这里有一个更通用的方法: 假设表A命名为父级,表B命名为子级 您可以在“域模型”对话框中的扩展生成器中设置关系

我有两个表
TableA
TableB
。必须在条件
TableA.Pid=TableB.Uid
下将它们连接在一起

表的域对象是在使用扩展生成器构建扩展时创建的


如何在TYPO3中实现这一点

简短回答:对于字段
pid
,您不能突然这样做
pid
是pages表的保留标识符,不能自由使用。此外,在MVC方案中,内部连接的概念并没有这样实现。不幸的是,伊姆霍。在过去,到处乱搞是很容易的

对于新手来说,这里有一个更通用的方法:
假设表A命名为父级,表B命名为子级

  • 您可以在“域模型”对话框中的扩展生成器中设置关系。 创建两个域模型:父域模型和子域模型
  • 通过在子域中创建关系parentrecord来连接它们 链接到模型父级的模型
  • 确保将两个都创建为聚合根

parentrecord关系将在您的模型
my\u ext/Classes/Domain/model/Child.php
中定义
@var
注释将其链接到父域模型:

/**
 * parentrecord
 *
 * @var \TYPO3\MyExt\Domain\Model\Parent
 */
protected $parentrecord;
然后可以从控制器中检索父记录的所有子项(例如,父uid=42),如下所示:

$this->childRepository->findByParentrecord(42);
这是一个简短的答案。请注意,您的自定义Extbase代码可能无法开箱即用,但不要灰心,它最终会工作的。 至于
pid
这件事,我会尽力帮你解决相关问题