尝试自定义Elgg数据库查询

时间:2013-01-26 15:44:12

标签: elgg

我一直在尝试自定义块用户插件以创建双向块,但是,在尝试调整事件管理器中的lib / functions.php时遇到了问题。

我基本上只是获取被阻止用户的列表,然后在通过$ entities_options查询数组返回事件列表之前尝试放入“NOT EXISTS”子句。我对Elgg的数据库查询方面有了新的认识,所以可以帮助我做正确的事。

// GET ARRAY OF BLOCKED USERS

$users = lee_framework_get_options(elgg_get_plugin_user_setting('blockuser_get', lee_loggedin_user_guid, 'blockuser'));
$blocked_user_array = array();
foreach($users as $user)

{
    $blocked_guid = get_user_by_username($user)->guid; 
    $blocked_user_array[] = $blocked_guid;

    $entities_options['owner_guids'] != $blocked_guid; // This is just to indicate what I am trying to achieve!

}

我相信我需要使用JOINS / WHERES子句,如页面其余部分所使用的那样,但我很难找到并使用正确的字段名称。例如

$entities_options['joins'][] = "JOIN " . elgg_get_config("dbprefix") . "entity_relationships e_ra ON e.guid = e_ra.guid_one";
$entities_options['wheres'][] = "(e_ra.guid_two IN (" . implode(", ", $friends_guids) . "))";

非常感谢任何关于此的建议:)

2 个答案:

答案 0 :(得分:1)

听起来你想用Elgg关系对此进行建模。例如UserA阻止UserB将是一种关系。 Elgg有一个用于创建和查询的API,可以使这更容易。

答案 1 :(得分:0)

对于任何感兴趣的人,使用放在事件管理器的functions.php文件中的以下代码解决了这个问题:

// GET ARRAY OF BLOCKED USERS

$blocked_users = lee_framework_get_options(elgg_get_plugin_user_setting('blockuser_get', lee_loggedin_user_guid, 'blockuser'));
$blocked_user_array = array();

foreach($blocked_users as $user) {

$blocked_user_array[] = get_user_by_username($user)->guid;

$entities_options['joins'][] = "JOIN " . elgg_get_config("dbprefix") . "metadata md on e.guid = md.entity_guid";
$entities_options['wheres'][] = "md.owner_guid != " . get_user_by_username($user)->guid;

}