【问题标题】:Query to get a all tags field values and pour all value in field查询以获取所有标签字段值并将所有值倒入字段中
【发布时间】:2018-05-13 23:20:39
【问题描述】:

更新: 我需要获取标签字段的所有值!

我的查询:

$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);
      }

上面的代码只返回一个和第一个标签值,我需要打印所有这些!

【问题讨论】:

    标签: php sql drupal


    【解决方案1】:

    您可以使用 GROUP_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();
    

    https://dev.mysql.com/doc/refman/5.7/en/group-by-functions.html#function_group-concat

    foreach($result as $nid => $tags) {
      echo $nid . ' : '.$tags;
    }
    

    【讨论】:

    • 感谢您的回答但不起作用,在这种情况下,我应该将tdata 字段中的所有标签值与foreach 或其他东西一起倒入,您能提出其他建议吗?
    • 你没有尝试我的代码,它完全符合你的要求,我无法为你提供更多帮助
    • 我尝试过,但没有结果!只返回没有所有标签字段值的所有数组!
    猜你喜欢
    • 2013-08-29
    • 2015-07-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-02-27
    • 2017-12-11
    • 2013-01-01
    • 1970-01-01
    相关资源
    最近更新 更多