Как исключить таблицы / дочерние элементы из результата в RedBeanStack Overflow

Я смоделировал отношение как это RedBeanPHP:

Car
id    color    ownPart

Part
id    name

Поэтому RedBean создает таблицы SQL, как и ожидалось:

Car
id    color

Part
id    name    car_id

Это прекрасно работает.

Тем не менее, у меня есть другие таблицы в моей БД, например, User это также имеет car_id выявление пользователей автомобиля.

Когда я хочу запросить все Carс и ее дети (Parts)

$cars = R::find('car');
$foo = R::exportAll( $cars ); echo json_encode($foo);

JSON также содержит каждый User связанные с автомобилем.

Как я могу опрашивать только машины со своими «настоящими» детьми?

0

Решение

exportAll указывает третий параметр $filter что вы сможете использовать, чтобы указать, какие отношения также экспортируются:

$foo = R::exportAll($cars, false, array('part'));
1

Другие решения

Пожалуйста, прочитайте ответ Джейкобса (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);
}
}

}
}
0

По вопросам рекламы [email protected]