0

我正在 modx 中开发一个自定义组件,客户要求通过资源组 ID 搜索它。我使用以下代码提取了资源组 ID 的片段:

// Check if user is logged in and get user group 
$user = (!empty($userId)) ? $modx->getObject('modUser', $userId) : $modx->user;

if (is_object($user)) {
    /*
    * modUser Groups
    */
    $group = print_r($user->getUserGroups(), true);
    $modx->toPlaceHolder('user.groups', $group);

} 

但是 $group 作为数组返回,所以我不能在查询中使用它:

Array ( [0] => 8 )

我试过这样称呼它:return $group[0];

但这只是转储第一个字母'A'

基本上我只想将数组中的值放入一个变量中,然后在我的搜索查询中使用它:

$query->where(array('accNumber:LIKE' => "%$accNo%"));
$query->andCondition(array('accName:LIKE' => "%$accName%"));
$query->andCondition(array('saleProperty:LIKE' => "%$saleProperty%"));
$query->andCondition(array('clientNumber' => "$group")); 

我是否认为我需要将数组的内容转换为字符串才能使用它们?对不起,如果这个问题是菜鸟,但我是菜鸟!

4

3 回答 3

1

正如已经建议的那样,删除print_r()所以 $groups 将包含一个数组。

$group = $user->getUserGroups();

andCondition()然后按如下方式调整您的最终结果(:IN需要一个数组):

$query->where(array('accNumber:LIKE' => "%$accNo%"));
$query->andCondition(array('accName:LIKE' => "%$accName%"));
$query->andCondition(array('saleProperty:LIKE' => "%$saleProperty%"));
$query->andCondition(array('clientNumber:IN' => $group));

http://rtfm.modx.com/display/xPDO20/xPDOQuery.where

于 2013-03-12T16:12:47.593 回答
0

只需删除print_r-> $group = $user->getUserGroups(),然后重试 return $group[0];

于 2013-03-12T15:17:16.453 回答
0

是的 - 您必须对其进行转换,但它会返回一个数组,因为任何给定的用户都可以属于多个组,如果您的客户决定更改他们管理用户的方式,您可能会提前计划该组。

于 2013-03-12T15:18:52.570 回答