Я смоделировал отношение как это 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);
}
}
}
}