【发布时间】:2013-06-25 06:21:49
【问题描述】:
我有两张桌子TableA 和TableB。这些必须在TableA.Pid = TableB.Uid 的条件下连接在一起。
表的域对象是在使用扩展构建器构建扩展时创建的。
如何在 TYPO3 中实现这一点?
【问题讨论】:
标签: database orm inner-join typo3
我有两张桌子TableA 和TableB。这些必须在TableA.Pid = TableB.Uid 的条件下连接在一起。
表的域对象是在使用扩展构建器构建扩展时创建的。
如何在 TYPO3 中实现这一点?
【问题讨论】:
标签: database orm inner-join typo3
简短回答:对于字段pid,您不能突然这样做。 pid 是 pages 表的保留标识符,不能随意使用。此外,在 MVC 方案中,INNER JOIN 连接的概念并没有这样实现。不幸的是,恕我直言。在过去很容易搞砸;)。
这里有一个更通用的方法,适合新手:
假设您的表 A 被命名为 parent 而表 B 被命名为 child。
parentrecord 关系将在您的模型 my_ext/Classes/Domain/Model/Child.php 中定义。@var 注释将其链接到 parent 域模型:
/**
* parentrecord
*
* @var \TYPO3\MyExt\Domain\Model\Parent
*/
protected $parentrecord;
然后可以像这样从您的控制器中检索父记录的所有子记录(例如,父 uid = 42):
$this->childRepository->findByParentrecord(42);
这是一个简短的答案。请注意,您的自定义 Extbase 代码可能无法开箱即用,但不要沮丧 - 它最终会起作用。
至于pid 的事情,我会尽力帮助你处理相关的other question。
【讨论】: