Не должно у вас изменение сущности в одном приложении влиять на сущность в другом.
Какая проблема, чтобы Client сходил в Order, получил идентификатор созданного заказа и дернул Billing?
$queryBuilder = $this->createQueryBuilder('ad');
$queryBuilder->andWhere($queryBuilder->expr()->isInstanceOf('ad', Ad_1::class));
или
$queryBuilder->andWhere('ad INSTANCE OF :type')->setParameter('type', Ad_1::class);
Ваш объект уже занимает память, плюс что-то еще занимает память, в какой-то момент ее не хватает. В Вашем случае при var_dump, но виноват не var_dump, а нехватка памяти. Решается ее увеличением, а лучше оптимизацией Вашего кода. К тому же Ваш объект может запросто иметь в себе бесконечный цикл.
ini_set('memory_limit', '64M');
echo '<pre>';
printf("Начало: %s \n", memory_get_usage());
$data = [];
for ($i = 0; $i < 100000; $i++) {
$data[] = ['a', 'b', 'c'];
}
printf("До создание двух массивов: %s \n", memory_get_usage());
$newData = array_merge($data, $data);
printf("После создание двух массивов: %s \n", memory_get_usage());
printf("До var_dump: %s \n", memory_get_usage());
var_dump($newData);
printf("После var_dump: %s \n", memory_get_usage());
Начало: 1604648
До создание двух массивов: 45496216
После создание двух массивов: 55982072
До var_dump: 55982024
После var_dump: 56022992
а надо чтобы формировался вот так
А все потому что видимо "по умолчанию" происходит так как я написал в ответ Виктор Кожухарь