如何在 TYPO3 中使用扩展数据库执行连接语句



我有两个实体,一个任务和一个用户。如何创建"带联接的查询"?

  1. 我需要列出包括 User.name 在内的所有任务。
  2. 我还需要一个查询来查找 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();

最新更新