[英]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.