我正在使用RedBean来创建时间表应用程序。
这是(简化的)DB结构:
所有者
项目的
任务
登录
表结构远比上面复杂,但这足以证明我的问题。
任务中有数百个日志项,项目中有数百个任务。
因此,如果我想获取特定所有者的所有日志项并获得相关的任务和项目,我将如何实现?
要使用SQL查询来获取数据是否足够直接,我可以选择我想要的数据等,但如果我修改数据,我需要从中创建数据。由于某些表具有相似的列名,因此RedBean不会(或似乎没有神奇地)将数据转换为bean。
所以我想我的问题是你如何构建一个RedBean查询,get,getAll,fetch,load等,它会将它从每个连接中使用的数据转换成bean?
我能找到的最接近的东西是遍历方法,这意味着Id递归地进入每个bean以找到它的'孩子,但这意味着返回整个结果集并进行处理。
如果最快的方法就是运行SQL查询并迭代数据并从中创建bean没问题。我已经这样做了,我只是想要一种稍微抽象的方式来做这件事,并且会认为RedBean可能会提供这种功能。
答案 0 :(得分:1)
只是为了给你一个想法,你也可以使用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。