RedBean 多 table 加入

RedBean multi table join

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

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

所有者

项目

任务

日志

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

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

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

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

所以我想我的问题是如何构造一个 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,方便遍历