Php 在Elgg中存储键值字典

Php 在Elgg中存储键值字典,php,plugins,elgg,Php,Plugins,Elgg,我正在为Elgg开发一个插件,用于跟踪从手机登录时发送到应用程序的设备ID。为此,我希望将这些设备ID存储在数据库中,并希望为此使用ElggObjects 这就是我现在所做的: function initialize() { $androidTokens = elgg_get_entities(array( 'type' => 'object', 'subtype' => 'androidTokens', 'lim

我正在为Elgg开发一个插件,用于跟踪从手机登录时发送到应用程序的设备ID。为此,我希望将这些设备ID存储在数据库中,并希望为此使用ElggObjects

这就是我现在所做的:

function initialize() {
     $androidTokens = elgg_get_entities(array(
          'type' => 'object',
          'subtype' => 'androidTokens',
          'limit' => 0
     ));
     $iosTokens = elgg_get_entities(array(
          'type' => 'object',
          'subtype' => 'iosTokens',
          'limit' => 0
     ));

     if ($androidTokens == 0) {
          $tokenObject = new ElggObject();
          $tokenObject->subtype = 'androidTokens';
          $tokenObject->tags = array();
          $tokenObject->save();
     }

     if ($iosTokens == 0) {
          $tokenObject = new ElggObject();
          $tokenObject->subtype = 'iosTokens';
          $tokenObject->tags = array();
          $tokenObject->save();
     }
}
因此,这将生成两个ELGGObject,它们保存android和ios设备的ID,存储在元数据字段标记中。但是,无法再检索此标记数组。当我这样做时:

$tokenObject = elgg_get_entities(array(
                         'type' => 'object',
                         'subtype' => $os.'Tokens',
                         'limit' => 0
                    ));
               $tokens = $tokenObject->tags

代币仍然是空的。有人知道我做错了什么吗?我是否使用了Elgg对象错误?

我认为出现问题的原因是Elgg_get_entities返回了一个实体数组

我假设每个令牌对象子类型只有一个是正确的吗?(一个用于iOS,一个用于Android?)

如果是这样,我将修改您的代码如下:

function initialize() {
 $androidTokens = elgg_get_entities(array(
      'type' => 'object',
      'subtype' => 'androidTokens',
      'limit' => 1 // only expecting one entity
 ));
 $iosTokens = elgg_get_entities(array(
      'type' => 'object',
      'subtype' => 'iosTokens',
      'limit' => 1 // only expecting one entity
 ));

 if (count($androidTokens) == 0) {
      $tokenObject = new ElggObject();
      $tokenObject->subtype = 'androidTokens';
      $tokenObject->tags = array();
      $tokenObject->save();
 }

 if (count($iosTokens) == 0) {
      $tokenObject = new ElggObject();
      $tokenObject->subtype = 'iosTokens';
      $tokenObject->tags = array();
      $tokenObject->save();
 }
}
稍后,在抓取实体时:

$tokenObject = elgg_get_entities(array(
                     'type' => 'object',
                     'subtype' => $os.'Tokens',
                     'limit' => 1 // only grab one
                ));
$tokens = $tokenObject[0]->tags; // get tag data for first (and only) entity