Как исключить таблицы / дочерние элементы из результата в 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
связанные с автомобилем.
Как я могу опрашивать только машины со своими "настоящими" детьми?
2 ответа
exportAll
указывает третий параметр $filter
что вы сможете использовать, чтобы указать, какие отношения также экспортируются:
$foo = R::exportAll($cars, false, array('part'));
Пожалуйста, прочитайте ответ Джейкобса ( /questions/3995626/kak-isklyuchit-tablitsyi-dochernie-elementyi-iz-rezultata-v-redbeanphp/3995631#3995631), если у вас проблема только на уровне (см. Мой комментарий ниже его ответа).
У меня были многомерные массивы для фильтрации, поэтому после нескольких часов попыток я наконец-то нашел обходной путь, не отфильтровывая то, что я хочу, а удаляя то, что я не хочу:
$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);
}
}
}
}