簡體   English   中英

如何在RedBeanPHP中從結果中排除表/子項

[英]How to exclude tables/children from result in RedBeanPHP

我已經將RedBeanPHP建模為這樣的關系:

Car
id    color    ownPart

Part
id    name

因此,RedBean按預期創建了SQL表:

Car
id    color

Part
id    name    car_id

這很好。

但是,我的數據庫中還有其他表,例如,一個User也有一個標識用戶car的car_id

當我想查詢所有Car及其子級( Part )時,

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

JSON還包含與汽車相關的每個User

我如何只查詢帶有“真實”孩子的汽車?

exportAll指定第三個參數$filter ,您應該可以使用它來指定還導出哪些關系:

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

如果您僅在水平上有問題,請閱讀Jacobs答案( 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); 
        }
      }

  }
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM