>我建模了一个像这样的关系,就是RedBeanPHP:
Car
id color ownPart
Part
id name
所以RedBean按预期创建了SQL表:
Car
id color
Part
id name car_id
这很好用。
但是,我的数据库中还有其他表,例如,一个User
也有一个car_id
来识别用户的汽车。
当我想通过以下方式查询所有Car
及其子项 (Part
s) 时
$cars = R::find('car');
$foo = R::exportAll( $cars ); echo json_encode($foo);
JSON 还包含与汽车相关的所有User
。
我怎样才能只查询带有"真正"孩子的汽车?
exportAll
指定第三个参数$filter
,您应该能够使用该参数来指定还导出哪些关系:
$foo = R::exportAll($cars, false, array('part'));
请阅读 雅各布斯答案 (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);
}
}
}
}