2013-02-14 115 views
2

该代码将几个表连接在一起,然后进行联合。这是我为Drupal 7网站编写的一个模块。Drupal 7数据库API'干净'代码

$query1 = db_select('field_data_field_short_title', 's'); 
$query1->join('node', 'n', 'n.nid = s.entity_id'); 
$query1->join('field_data_field_a_z', 'a', 'a.entity_id = n.nid'); 

$query1->addField('s', 'field_short_title_value'); 
$query1->addField('n', 'nid'); 
$query1->addField('a', 'field_a_z_value'); 

$query2 = db_select('field_data_field_short_title_alternative', 'h'); 
$query2->join('node', 'o', 'o.nid = h.entity_id'); 
$query2->join('field_data_field_a_z', 'z', 'z.entity_id = o.nid'); 

$query2->addField('h', 'field_short_title_alternative_value'); 
$query2->addField('o', 'nid'); 
$query2->addField('z', 'field_a_z_value'); 

$query1->union($query2); 

$result = $query1->execute(); 

从考虑使用Drupal的数据库API的其他例子,给我的感觉有可能写这个的“清洁”的方式。我的代码中有很多重复。有更清洁的方法吗?

回答

-1

如果查询不是动态生成的,您应该考虑在db_query中写入sql。 Db_select有更多的开销。