web-dev-qa-db-ja.com

カスタムエンティティのビューに関係を追加する方法

nodeおよびuserフィールドを介してnidおよびuidを参照するエンティティがあります。

スキーマの周りにエンティティを作成しました。ビューで使用したいと思います。エンティティのフィールドを表示する新しいエンティティに基づいてビューを作成できます。

次に、nodeuserに関係を追加して、フィールドをプルできるようにします。したがって、関連するユーザーとノードのフィールドを表示します 私のエンティティバンドルではありません

これを行う正しい方法は何ですか?

6
Bulat

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'),
    ),
  );
}
7
monymirza

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';
  }
?>
10
pfrenssen