我怎么能避免看门狗的独特()?

时间:2015-03-09 10:44:35

标签: mysql database drupal drupal-7

我想避免在我的代码中使用distinct()。我想要一些帮助,以便创建一个表,该表将保留从db表看门狗获取的值,并检查是否已采用下一个值。如果下一个值在表中,那么这个值就不会插入到表中...我需要一个真正的帮助,因为如果我解决了这个问题,我将结束我的模块。提前谢谢!!

// Begin building the query.
  $query = db_select('watchdog', 'th')
    ->extend('PagerDefault')
    ->orderBy('wid')
    ->distinct()
    ->fields('th', array('variables', 'type', 'severity', 'message', 'wid'))
    ->limit(2000);

  // Fetch the result set.
  $result = $query  -> execute();

  // Loop through each item and add to $row.
  foreach ($result as $row) {
    blablablabla($row);
  }
}

我想要变量列的不同值。我不想要一个主题表,我只想要一个带有一些值的表。

1 个答案:

答案 0 :(得分:1)

在循环之前创建一些空数组。在循环内部检查其中是否存在唯一值。如果只是跳过循环迭代(继续)。如果它没有将它存储在数组中并执行你的blablabal();

    // query without distingc
//  print_r($results); print out array of results to see what field to take as unique

      $already_processed = array();

  foreach ($result as $row) {
    $unique_value = $row['some_unique_field'];
    if (in_array($unique_value, $already_processed)) continue;
    $already_processed[] = $unique_value;
    blablabla($row);
  }

这样的事情。