Parse: Как мне создать данные Pointer с помощью PHP SDK?

Примеры, показанные здесь (https://parse.com/docs/relations_guide#onetomany-pointers) есть в iOS и Android.

Можно ли создать Pointer хранилище данных с PHP SDK?

1

Решение

Я просто столкнулся с той же проблемой, пытаясь установить отношение «многие ко многим», и после некоторых проб и ошибок я получил его, выполнив:

$obj = new ParseObject("ObjectClassName");
$obj->setAssociativeArray("relationFieldName", array('__type' => 'Pointer', 'className' => 'relationClassName', 'objectId' => 'relationObjId'));

Например, если вы хотите связать книгу с пользователем через книгу авторы ключ, ObjectClassName будет Книга, отношение_FieldName будет авторы и отношение ClassCame будет _User (помните, что специальные классы Parse имеют префикс подчеркивания).

Дайте мне знать, если это работает и для вас! Это немного расстраивает, что я не мог найти что-нибудь об этом на PHP-документация Parse по отношениям. У меня была такая же проблема в JS раньше, но по крайней мере этот вопрос помог мне сразу.

1

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

У меня та же проблема, и создание массива, чтобы стать указателем, — не лучший способ решения проблемы.

Вы можете использовать \ Parse \ ParseOject из SDK.

$pointer =  parseObject::create('className', $id, true);

Я нашел это в ParseObject.php:

    /**
* Static method which returns a new Parse Object for a given class
* Optionally creates a pointer object if the objectId is provided.
*
* @param string $className Class Name for data on Parse.
* @param string $objectId  Unique identifier for existing object.
* @param bool   $isPointer If the object is a pointer.
*
* @return ParseObject
*/
public static function create($className, $objectId = null, $isPointer = false)
1

Похоже, вы пытаетесь создать отношения 1-многие. Вы можете сделать это используя ParseObject::getRelation, который вернет существующее отношение или создаст новое (вы можете проверить определение Вот).

$obj = new ParseObject("ObjectClassName");

// get a relation (new or existing)
$relation = $obj->getRelation('myObjects');

// add objects to this relation
$relation->add([$myObject1, $myObject2, $myObject3]);

// save my object & my relation, with the new objects in it
$obj->save();

Если вы пытаетесь создать множество связей, вам нужно создать таблицу Join (технически класс ‘объединения’, например MyParseJoinClass) вместо Если я неправильно понял, и вы пытаетесь выполнить 1-1, вы всегда можете установить объект в качестве свойства для автоматического создания указателя

$obj->set('myPointer', $myPointedObject);

Внутренне вы можете использовать $obj->_toPointer чтобы получить массив, составляющий указатель на объект, но я бы порекомендовал вам использовать поддерживаемое отношение & типы указателей в ParseObject вместо этого намного легче управлять.

0