我有一個情況我需要查詢一些節點和連接兩個連接到該節點的字段。這兩個字段都可以具有無限的值,因此字段表中有多行。我試圖讓它返回字段中找到的nid和所有值記錄。的Drupal 7選擇查詢連接
$query = db_select('node', 'n');
$query->leftJoin('field_data_aaa_alert_path', 'ap', 'n.nid = ap.entity_id');
$query->leftJoin('field_data_aaa_alert_region', 'ar', 'n.nid = ar.entity_id');
$query
->fields('n', array('nid'))
->fields('ap', array('aaa_alert_path_value'))
->fields('ar', array('aaa_alert_region_value'))
->groupBy('n.nid')
->condition('type', 'aaa_alert')
->condition('status', 1)
->orderBy('created', 'DESC');
$result = $query->execute();
while($record = $result->fetchAssoc()){
//...
}
這工作,但它只會返回1個記錄aaa_alert_path_value和aaa_alert_region_value時,其實還有更多。
然後我試圖嘗試模塊EntityFieldQuery Extra Fields
$query = new EntityFieldQueryExtraFields();
$query->entityCondition('entity_type', 'node')
->entityCondition('bundle', 'aaa_alert')
->propertyCondition('status', NODE_PUBLISHED)
->addExtraField('aaa_alert_region', 'value')
->addExtraField('aaa_alert_path', 'value')
->propertyOrderBy('created', 'DESC');
$result = $query->execute();
這工作,將返回所有的記錄,這兩個領域,我需要,但有這個模塊中的錯誤,如果兩個一個不會返回任何東西字段不包含記錄。
我已經嘗試使用不同的連接,但我似乎無法得到它的權利。我在這裏錯過了什麼?我試圖做到這一點,而不使用EntityFieldQuery
類,因爲它會要求我返回所有返回的結果以獲取我需要的字段,這是巨大的性能影響。與->groupBy('n.nid')
謝謝!完美的作品 –