मुझे अपने मॉड्यूल दृश्य एकीकरण के साथ कोई समस्या है। मुझे उस उपयोगकर्ता के बारे में जानकारी प्रदान करने की आवश्यकता है जिसने वीडियो और टाइमस्टैंप जोड़ा है। वीडियो फ़ील्ड एक सीसीके एम्बेडेड मीडिया फ़ील्ड है और यह content_field_3d_party_video तालिका में स्टोर करता है।Drupal विचार एकीकरण hook_views_data
मेरे तालिका स्कीमा:
function MODULE_schema() {
$schema = array();
$schema['video_data'] = array(
'description' => t('Users and timestamps for video field'),
'fields' => array(
'value' => array(
'description' => t('Emfield value'),
'type' => 'varchar',
'length' => '255',
'not null' => TRUE,
'default' => '',
),
'uid' => array(
'description' => t('User id'),
'type' => 'int',
'unsigned' => TRUE,
'not null' => TRUE,
'default' => 0,
),
'timestamp' => array(
'description' => t('Timestamp'),
'type' => 'int',
'unsigned' => TRUE,
'not null' => TRUE,
'default' => 0,
),
),
'primary key' => array('value'),
'indexes' => array(
'timestamp' => array('timestamp'),
'uid' => array('uid'),
),
);
return $schema;
}
दृश्य hook_views_data:
function MODULE_views_data() {
$data = array();
$data['video_data']['table']['group'] = t('Video Data');
$data['video_data']['table']['join'] = array(
'node' => array(
'left_table' => 'content_field_3d_party_video',
'left_field' => 'field_3d_party_video_value',
'field' => 'value',
),
'users' => array(
'left_field' => 'uid',
'field' => 'uid',
),
);
$data['video_data']['value'] = array(
'title' => t('Video value'),
'relationship' => array(
'base' => 'content_field_3d_party_video',
'base field' => 'field_3d_party_video_value',
'field' => 'value',
'handler' => 'views_handler_relationship',
'label' => t('Video value'),
),
);
$data['video_data']['uid'] = array(
'title' => t('User id'),
'relationship' => array(
'base' => 'users',
'base field' => 'uid',
'field' => 'uid',
'handler' => 'views_handler_relationship',
'label' => t('User id'),
),
);
$data['video_data']['timestamp'] = array(
'title' => t('Timestamp field'),
'field' => array(
'handler' => 'views_handler_field_date',
'click sortable' => TRUE,
),
'sort' => array(
'handler' => 'views_handler_sort_date',
),
'filter' => array(
'handler' => 'views_handler_filter_date',
),
);
return $data;
}
लेकिन मेरी मेज में शामिल नहीं है में शामिल होने और विचारों में इस तरह के एसक्यूएल उत्पन्न:
SELECT node.nid AS nid,
node.title AS node_title,
node.language AS node_language,
node_data_field_3d_party_video.field_3d_party_video_embed AS node_data_field_3d_party_video_field_3d_party_video_embed,
node_data_field_3d_party_video.field_3d_party_video_value AS node_data_field_3d_party_video_field_3d_party_video_value,
...
node.type AS node_type,
node.vid AS node_vid
FROM node node
LEFT JOIN content_field_3d_party_video content_field_3d_party_video_video_data ON value = content_field_3d_party_video_video_data.field_3d_party_video_value
LEFT JOIN users users_video_data ON uid = users_video_data.uid
LEFT JOIN content_field_3d_party_video node_data_field_3d_party_video ON node.vid = node_data_field_3d_party_video.vid
WHERE ...
एक नजर डालें ON **uid** = users_video_data.uid
और ON **value** = content_field_3d_party_video_video_data.field_3d_party_video_value
कोई मदद?
मिला समाधान। सही ढंग से एक CCK क्षेत्र के माध्यम से नोड तालिका में शामिल होने के लिए हम node_data_field_3d_party_video
left_table के बजाय content_field_3d_party_video
उल्लेख करना होगा: हम node_data_field_3d_party_video
निर्दिष्ट करना होगा
सही ढंग से एक CCK क्षेत्र के माध्यम से नोड तालिका में शामिल होने के लिए:
$data['video_data']['table']['join'] = array(
'node' => array(
'left_table' => 'node_data_field_3d_party_video',
'left_field' => 'field_3d_party_video_value',
'field' => 'value',
),
'users' => array(
'left table' => 'users',
'left_field' => 'uid',
'field' => 'uid',
),
);
(http://blog.stackoverflow.com/2011/07/its-ok-to-ask-and-answer- [यह पूछें और उत्तर अपने प्रश्न ठीक है] अपने-खुद-प्रश्न /) – Max