我已经建模了像这样的关系是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
。
我怎样才能用“真正的”孩子来查询汽车?
答案 0 :(得分:1)
exportAll
指定第三个参数$filter
,您应该可以使用它来指定还导出哪些关系:
$foo = R::exportAll($cars, false, array('part'));
答案 1 :(得分: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);
}
}
}
}