我有两个实体,一个任务和一个用户。如何创建"带联接的查询"?
- 我需要列出包括 User.name 在内的所有任务。
- 我还需要一个查询来查找 User.name="Chuck" 的所有任务
我如何使用extbase(TYPO3 6.1(实现这一点。有没有一个带示例的好教程?
在 Extbase 中,可以查询/寻址子对象的属性。因此,假设您的任务模型与用户模型有关系,这很容易。
要列出所有任务(包括其用户名(,只需查询 TaskRepository(将其注入控制器(:
$tasks = $this->taskRepository->findAll();
$this->view->assign('tasks', $tasks);
现在,在 Fluid 模板中,您可以迭代任务:
<f:for each="{tasks}" as="task">
Name of task: {task.name}
Assigned user: {task.user.name}
</f:for>
可以使用任务模型的每个属性,包括子对象的属性。
要按分配的用户查找任务,请将方法添加到任务存储库中,例如:
public function findByTaskAssignedUser($user) {
$query = $this->createQuery();
$query->matching($query->equals('user.name', $user));
return $query->execute();
}
因此,您将获得分配的用户名称与$user匹配的所有任务对象。
您也可以将 $query->like 用于 LIKE 语句,当然,您最好使用用户的 uid 来执行安全比较。不用说,如果是用户提供的请求,则需要对$user进行消毒。
最精简的文档来源是 Extbase 和 Fluid 备忘单 on http://www.typovision.de/fileadmin/slides/ExtbaseFluidCheatSheetTypovision.pdf。请查看"自定义存储库查询"。
有一本免费的书"TYPO3 扩展与 TYPO3 和 Fluid",请参阅有关单个数据库查询的章节:http://docs.typo3.org/typo3cms/ExtbaseFluidBook/6-Persistence/3-implement-individual-database-queries.html
1.您可以阅读所有任务并在 TCA 和域模型中添加引用。如果您使用扩展构建器,这将自动构建。您可以在视图中读取用户信息,如下所示:
<f:for each="{Tasks}" as="task">
{task.reference.name}
</f:for>
阿拉伯数字。"任务"实体中应具有引用。所以你可以在你的任务存储库函数中写一些类似"reference.name"的东西
$query = $this->createQuery();
$query->matching(
$query->equals('reference.name', 'Chuck')
);
$results = $query->execute();