RedBean多表连接

时间:2015-07-21 19:29:05

标签: php join redbean

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

这是(简化的)DB结构:

所有者

  • ID
  • 名称
  • 电子邮件

项目

  • ID
  • 描述
  • owner_id

任务

  • ID
  • 描述
  • PROJECT_ID

登录

  • ID
  • 启动
  • 描述
  • TASK_ID

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

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

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

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

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

我能找到的最接近的东西是遍历方法,这意味着Id递归地进入每个bean以找到它的'孩子,但这意味着返回整个结果集并进行处理。

如果最快的方法就是运行SQL查询并迭代数据并从中创建bean没问题。我已经这样做了,我只是想要一种稍微抽象的方式来做这件事,并且会认为RedBean可能会提供这种功能。

1 个答案:

答案 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。