gpt4 book ai didi

php - RedBean 多表连接

转载 作者:行者123 更新时间:2023-12-04 14:31:58 24 4
gpt4 key购买 nike

我正在使用 RedBean 创建时间表应用程序。

这是(简化的)数据库结构:

所有者

  • 编号
  • 姓名
  • 电子邮件

项目

  • 编号
  • 描述
  • owner_id

任务

  • 编号
  • 描述
  • 项目编号

日志

  • 编号
  • 开始
  • 结束
  • 描述
  • 任务编号

表结构比上面复杂得多,但这应该足以证明我的问题。

一个任务中有数百个日志项,一个项目中有数百个任务。

因此,如果我想获取特定所有者的所有日志项并获取相关的任务和项目,我将如何实现?

使用 SQL 查询获取数据非常简单,我可以选择我想要的数据等,但如果我修改数据,我需要从中创建 bean。由于某些表具有相似的列名,RedBean 不会(或似乎不会神奇地)将数据转换为 bean。

所以我想我的问题是如何构造一个 RedBean 查询、get、getAll、fetch、load 等,它将它从每个连接使用的数据转换为一个 bean?

我能找到的最接近的方法是 traverse 方法,这意味着我递归地进入每个 bean 以找到它的子级,但这意味着返回整个结果集并对其进行处理。

如果最快的方法只是运行 SQL 查询并遍历数据并从中创建 bean,那没问题。我已经在这样做了,我只是想要一种稍微更抽象的方式来做到这一点,并且会考虑 RedBean 可能会提供该功能。

最佳答案

只是给你一个想法,你也可以使用 mySQL 连接来使用 R::getAll(); 正确地获得你需要的东西,例如

$result = getAll("SELECT L.* FROM logs L, tasks T, projects P, owner O 
WHERE
L.task_id = T.id AND
T.project_id = P.id AND
P.owner_id = O.id");

$myResult = R::convertToBeans('myResult', $result);

R::convertToBeans 将结果转换为易于遍历的 Bean。

关于php - RedBean 多表连接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31547953/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com