node
およびuser
フィールドを介してnid
およびuid
を参照するエンティティがあります。
スキーマの周りにエンティティを作成しました。ビューで使用したいと思います。エンティティのフィールドを表示する新しいエンティティに基づいてビューを作成できます。
次に、node
とuser
に関係を追加して、フィールドをプルできるようにします。したがって、関連するユーザーとノードのフィールドを表示します 私のエンティティバンドルではありません 。
これを行う正しい方法は何ですか?
2つのソリューション:
1)リレーション、リレーション終了フィールド、リレーションUIを使用する
2)コマースモジュールのhook_views_data_alter
の例を使用:
function hook_views_data_alter(&$data) {
// Expose the uid as a relationship to users.
$data['users']['uc_orders'] = array(
'title' => t('Orders'),
'help' => t('Relate a user to the orders they have placed. This relationship will create one record for each order placed by the user.'),
'relationship' => array(
'base' => 'uc_orders',
'base field' => 'uid',
'relationship field' => 'uid',
'handler' => 'views_handler_relationship',
'label' => t('orders'),
),
);
}
Entity APIはそのままでこれをサポートしますが、データが表すエンティティを通知する必要があります。 Entity APIが数値データを含むフィールドを検出すると、デフォルトでタイプ「整数」が割り当てられます。タイプを適切なエンティティタイプに変更するだけで、ビューで関係を定義できます。
<?php
/**
* Implements hook_entity_property_info_alter().
*/
function my_entity_entity_property_info_alter(&$info) {
$info['my_entity']['properties']['nid']['type'] = 'node';
$info['my_entity']['properties']['uid']['type'] = 'user';
$info['my_entity']['properties']['tid']['type'] = 'taxonomy_term';
}
?>