如何从RedBeanPHP中的结果中排除表/子项

时间:2014-12-02 12:35:44

标签: php sql redbean

我已经建模了像这样的关系是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

我怎样才能用“真正的”孩子来查询汽车?

2 个答案:

答案 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); 
        }
      }

  }
}