2015-07-21 74 views
1

我使用RedBean創建時間表應用程序。RedBean多表連接

這裏是(簡化)DB結構:

所有者

  • ID
  • 電子郵件

項目

  • ID
  • 描述
  • owner_id

任務

  • ID
  • 描述
  • PROJECT_ID

登錄

  • ID
  • 開始
  • 描述
  • TASK_ID

表結構比上述複雜得多,但是,應該是足夠示範我的問題。

任務中有數百個日誌項目,項目中有數百個任務。

因此,如果我想爲特定所有者獲取所有日誌項目並獲得相關任務和項目,我將如何實現這一目標?要使用SQL查詢來獲取數據足夠直接,我可以選擇我想要的數據等,但如果我修改數據,我需要從它創建bean。由於一些表格有相似的列名RedBean不會(或者似乎並不奇蹟般)將數據轉換爲bean。

所以我想我的問題是你如何構建一個紅豆查詢,獲取,GETALL,提取,加載等,這將數據從每個轉換,它使用連接成一個bean?

我能找到最接近的是遍歷方法,這意味着標識遞歸進入每個bean找到自己的孩子,但是這意味着返回整個結果集並進行處理。

如果最快的方法是運行SQL查詢並遍歷數據並從中創建bean沒有問題。我已經這樣做了,我只是想要一個稍微抽象的方式來做到這一點,並認爲RedBean可能會提供這種功能。

回答

0

只是給你一個想法,你也可以使用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); 

​​會將結果轉換成可輕易遍歷的Bean。

+0

類型:在「選擇L. *」後刪除逗號。 – user2340939