2014-12-02 63 views
0

我已經仿照這樣的關係是RedBeanPHP:如何排除表/從結果孩子RedBeanPHP

Car 
id color ownPart 

Part 
id name 

所以紅豆創建SQL表預期:

Car 
id color 

Part 
id name car_id 

這個偉大的工程。

但是,我在我的數據庫中有其他表格,例如一個User,也有一個car_id識別用戶汽車。

當我想通過

​​

查詢所有Car S和它的孩子(Part S)的JSON還包含了每一個User相關的汽車。

我怎樣才能用他們的「真正的」孩子查詢汽車?

回答

1

exportAll指定第三個參數$filter,你應該能夠使用指定哪些還遠銷關係:

$foo = R::exportAll($cars, false, array('part')); 
+0

謝謝!這很棒!只是一個下面的問題:如何使用這個嵌套數組?例如。我的'part's有'srew's(='螺絲'有'part_id'),並且DB中有'brokenpart'也有'part_id'。但我只想在JSON中顯示螺絲部分。 – 2014-12-02 16:32:02

+0

@ A2i_您需要在RedBean之外執行此操作。我不相信它支持更復雜的過濾。 – 2014-12-02 16:38:52

0

請閱讀雅各布回答(https://stackoverflow.com/a/27253767/2707529)如果你只是在水平有問題(見我的評論低於他的回答)。

我不得不多維數組進行過濾,這樣的嘗試小時後我終於通過不過濾我想要什麼,但刪除我不想要什麼了至少一種解決方法:

$cars = R::find('car'); 
$foo = R::exportAll($cars); 

$keystoremove = array("ownPart", "ownBrokenpart"); 
delFromArray($foo, $keystoremove); 

echo json_encode($foo); 


function delFromArray(&$array, $keys) { 
    foreach ($array as $key => &$value) { 
     if (in_array($key, $keys, true)){ 
     unset($array[$key]); 
     } 
     else { 
     if (is_array($value)) { 
      delFromArray($value, $keys); 
     } 
     } 

    } 
}