Google Firestore - Доступ к ключам / значениям внутри массива / карты в запросе - PullRequest
0 голосов
/ 21 марта 2020

Я сейчас пытаюсь получить доступ к информации в документе здесь. Я на самом деле не знаю, что это за структура данных. Сначала я думал, что это массив, а теперь карта, но, может быть, даже пары ключ / значение?

enter image description here

Код, который я использую для инициализации, это :

$data = [
    'additional_email_info' => 'true',
    'address' => $addressData,
      ...
     ]

Где адрес объявляется так же, как раз перед ним. Мой текущий код для доступа к полю 'city':

$docRef = $db->collection('activities');
$query = $docRef->where('address', 'in', [$city_search]);
$documents = $query->documents();

Мне удалось получить информацию вне адреса в других полях, но я не уверен, как получить доступ к этому полю в поле и на их странице есть небольшая документация об этом https://cloud.google.com/firestore/docs/query-data/queries.

1 Ответ

1 голос
/ 21 марта 2020

Если поле в документе Firestore имеет подполя, то значение, которое вы получаете при доступе к этому полю, представляет собой словарь / массив. Таким образом, вы можете получить доступ к городу вашего примера документа с помощью:

$docRef = $db->collection('activities');
$query = $docRef->where('address', 'in', [$city_search]);
$documents = $query->documents();

foreach ($documents as $city) {
    printf('Doc : %s' . PHP_EOL, $city->id());
    printf('Date: %s' . PHP_EOL, $city['date']);
    printf('City: %s' . PHP_EOL, $city['address']['city']);
    printf(PHP_EOL);
}

Если вы хотите запросить по городу, вы будете использовать точечная запись :

$docRef->where('address.city', '=', 'London');
...