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

Я смоделировал отношение как это 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 связанные с автомобилем.

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

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

  }
}
Другие вопросы по тегам