Как найти сущность из Google Cloud Datastore, которая имеет значение c со значением PHP? - PullRequest
0 голосов
/ 27 марта 2020

Следующий код был запущен в Google App Engine Flex env.

Например: ключ Ключ (Task, "t12") . Я могу найти его в PHP, используя следующий синтаксис:

$key = $datastore->key('Task', "t12");
$task = $datastore->lookup($key);

Однако, если ключ Ключ (Task, 12) . Я не могу найти его с синтаксисом:

$key = $datastore->key('Task', 12);
$task = $datastore->lookup($key);

Или даже

$key = $datastore->key('Task', intval("12"));
$task = $datastore->lookup($key);

Я попробовал запрос еще раз, и он работал хорошо для первого объекта (который был создан в коде). Однако для следующих трех объектов (которые были созданы с помощью консоли) работал только последний объект. Я узнал там другое в первом столбце.

enter image description here

1 Ответ

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

Согласно официальной документации

Присвоение идентификаторов В дополнение к виду у каждого объекта есть идентификатор, назначаемый при создании объекта. Поскольку он является частью ключа объекта, идентификатор постоянно связан с объектом и не может быть изменен. Его можно назначить одним из двух способов:

1. Ваше приложение может указать собственную строку имени ключа для объекта.

2. Вы можете использовать Firestore в режиме хранилища данных, автоматически назначая объект целое число c ID.

3. Присвоение собственного числа c ID, являющегося целым числом

Поэтому я использовал случай 3, а вы использовали случай 1. В случае 1 вы должны искать строку, потому что вы устанавливаете имя ключа, когда вы вставляете, используя консоль, которая имеет тип string. Когда я вставлял запись с использованием клиентских библиотек, я использовал свой собственный идентификатор Numberri c, который имеет тип int.

name = 12 и name = "12" - две строки, которые не совпадают

...