Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/74.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 查询以获取所有标记字段值并将所有值倒入字段_Php_Sql_Drupal - Fatal编程技术网

Php 查询以获取所有标记字段值并将所有值倒入字段

Php 查询以获取所有标记字段值并将所有值倒入字段,php,sql,drupal,Php,Sql,Drupal,更新: 我需要得到一个标签的所有值字段 我的查询: $query = db_select('node', 'node'); $query->fields('tagsdata',array('name')); $query->fields('node', array('nid')); $query->leftJoin('field_data_field_tags', 'tags', 'tags.entity_id = node.nid'); $query->leftJoi

更新: 我需要得到一个标签的所有值字段

我的查询:

$query = db_select('node', 'node');
$query->fields('tagsdata',array('name'));
$query->fields('node', array('nid'));

$query->leftJoin('field_data_field_tags', 'tags', 'tags.entity_id = node.nid');
$query->leftJoin('taxonomy_index', 'tagsindex', 'tagsindex.nid = tags.entity_id');
$query->leftJoin('taxonomy_term_data','tagsdata','tagsdata.tid = tags.field_tags_tid AND node.nid = tagsindex.nid');

$result = $query->execute();

    while( $record = $result->fetchAssoc() ) { 
        $items[] = $record;
    }
和我的代码:

    //SORT
   array_multisort(array_column($items, 'nid'), $items);
foreach ($items as $row) {

    $hash[$row[nid]] = $row;
}

$resultfinal = ($hash);
    // END SORT 
foreach($resultfinal as $finalarrays)
      {
         $tags=$finalarrays['name'];
         print_R ($tags);
      }

以上代码只需返回标签的第一个值,我需要打印所有标签

您可以使用GROUP\u CONCAT mysql函数来获取所有逗号内爆的值:

$result = db_query("SELECT tags.entity_id as nid, GROUP_CONCAT(t.name) as tdata  FROM field_data_field_tags 
INNER JOIN taxonomy_term_data t ON t.tid = tags.field_tags_tid 
WHERE tags.entity_type = :type GROUP BY tags.entity_id", 
array(':type' => 'node'))->fetchAllKeyed();
注意:有时您有太多的字符串要连接,所以您需要在以下情况之前增加限制:

db_query('SET SESSION group_concat_max_len=10000');
$result = db_query("SELECT tags.entity_id as nid, GROUP_CONCAT(t.name) as tdata  FROM field_data_field_tags 
INNER JOIN taxonomy_term_data t ON t.tid = tags.field_tags_tid 
WHERE tags.entity_type = :type GROUP BY tags.entity_id", 
array(':type' => 'node'))->fetchAllKeyed();


谢谢你的回答,但不起作用,在这种情况下,我应该在
tdata
字段中使用
foreach
或其他东西,你能提出另一个建议吗?你没有尝试我的代码,它完全是你想要的,我无法为你提供更多帮助我尝试了,但没有结果!只需返回不带所有标记的所有数组字段值!
foreach($result as $nid => $tags) {
  echo $nid . ' : '.$tags;
}