ルールのカスタムコードを評価しています。ユーザーのリストを取得し、関連するすべてのプロファイルを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);
最初の問題は、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);
私はそれをテストしていませんが、動作するはずです。