我正在为Elgg开发一个插件,它可以跟踪从手机登录时发送给应用程序的设备in。为此,我想将这些设备in存储在数据库中,并使用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();
}
}因此,这将生成两个ElggObjects,它们分别包含android和ios设备的in,并存储在元数据字段标记中。然而,这个标记数组不能再被检索。当我这样做的时候:
$tokenObject = elgg_get_entities(array(
'type' => 'object',
'subtype' => $os.'Tokens',
'limit' => 0
));
$tokens = $tokenObject->tags令牌保持为空。有人知道我做错了什么吗?我是不是用错了Elgg对象?
发布于 2015-03-20 22:49:18
我认为你遇到问题的原因是elgg_get_entities返回了一个实体数组。
我假设每个token对象子类型中只有一个是正确的吗?(一个用于iOS,另一个用于安卓?)
如果是这样,我将修改您的代码,如下所示:
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) entityhttps://stackoverflow.com/questions/29135608
复制相似问题