如何在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_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); 
        }
      }
  }
}