解析:如何使用PHP SDK创建指针数据


Parse: How do I create a Pointer data with PHP SDK?

此处显示的示例(https://parse.com/docs/relations_guide#onetomany-指针)在iOS和Android中。

是否可以使用PHP SDK创建Pointer数据存储?

我刚刚在尝试建立多对多关系时遇到了同样的问题,经过一番尝试和错误,我通过以下操作使其正常工作:

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

例如,如果您想通过Book的authors键将Book与User关联起来,ObjectClassName将是Book,relationFieldName将是authors并且relationClassName将为_User(请记住Parse的特殊类以下划线为前缀)。

让我知道这是否也适用于你!有点令人沮丧的是,我在Parse关于关系的PHP文档中找不到任何关于这方面的内容。我以前在JS中也遇到过同样的问题,但至少这个问题立刻帮助了我。

我遇到了同样的问题。SDK中有一个专门用于此的函数,它更简洁。

In''Parse''ParseOject:

$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分钟的关系。您可以使用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();

如果你试图建立许多关系,你会想要创建一个联接表(技术上是一个联接"类",比如MyParseJoinClass)。如果我误解了,而您正试图执行1-1,您可以始终将对象设置为属性,以自动创建指针

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

在内部,您可以使用$obj->_toPointer来获得一个数组,该数组由引用对象的指针组成,但我建议您使用支持的关系&相反,ParseObject中的指针类型更易于管理。