web-dev-qa-db-ja.com

ユーザーのリストからすべてのユーザープロファイルを取得する

ルールのカスタムコードを評価しています。ユーザーのリストを取得し、関連するすべてのプロファイルをprofile2モジュールからロードします。以下の私のコードは、すべてのユーザーを読み込み、profile_load_multiple()関数に入力するUIDの配列を取得しましたが、1つのユーザープロファイルを返すだけで、すべてのプロファイルを返します。結局、作成しているノード「プロジェクト」のフィールド(プロジェクトリソース)の用語を、各ユーザーのメインプロファイルにあるフィールド(リソース)と比較したいと思います。私の意図は、これを達成するためにルールを使用することです。

$users = entity_load('user');
$arrayuids = array();
foreach ($users as $user)
{
array_Push($arrayuids, $user->uid);
}
$profile = profile2_load_multiple($arrayuids, FALSE);
dsm($arrayuids);
dsm($profile);
3
Andrew Welch

最初の問題は、pidの代わりにuidを送信することです。 profile2_load_multipleの最初の引数は$ pidsで、これはprofile2 idです。

このコードを試してください:

$users = entity_load('user');
$arrayuids = array_keys($users);

$query = new EntityFieldQuery();    
$query->entityCondition('entity_type', 'profile2')
    ->propertyCondition('uid', $arrayuids, 'IN');

$profile = $query->execute();

dsm($arrayuids);
dsm($profile);

私はそれをテストしていませんが、動作するはずです。

2
Alexandru Savin