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

问题描述 投票:1回答:3

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

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

php pointers parse-platform
3个回答
1
投票

我只是遇到了同样的问题,试图建立一个多对多的关系,经过一些试验和错误,我得到了它的工作:

$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's PHP documentation on relations上找不到任何关于这个的东西有点令人沮丧。我之前在JS中遇到过同样的问题,但至少this question马上帮助了我。


1
投票

我遇到过同样的问题。 SDK专门为此提供了一个更简洁的功能。

在\ 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)

0
投票

听起来你正试图建立一个多关系。您可以使用ParseObject::getRelation执行此操作,它将返回现有关系,或者创建一个新关系(您可以查看定义here)。

$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中支持的关系和指针类型,这样更容易管理。

© www.soinside.com 2019 - 2024. All rights reserved.