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 に答える