Drupal 7 SimpleTesting异常:SQLSTATE[42S02]

Drupal 7 SimpleTesting异常:SQLSTATE[42S02],drupal-7,simpletest,Drupal 7,Simpletest,SimpleTesting PDOException:SQLSTATE[42S02]查看ichionid于2011年12月15日上午10:56发布的编辑修订 我正在开发一个模块。我试图合并SimpleTest模块,以便有一个单独的地方包含我的代码测试 但是,当我尝试对数据库中由我构建的表运行查询时,我得到: PDOException:SQLSTATE[42S02]:找不到基表或视图:1146表'Playerd.SimpleTest311135表名 它尝试查找表SimpleTest311135 T

SimpleTesting PDOException:SQLSTATE[42S02]查看ichionid于2011年12月15日上午10:56发布的编辑修订

我正在开发一个模块。我试图合并SimpleTest模块,以便有一个单独的地方包含我的代码测试

但是,当我尝试对数据库中由我构建的表运行查询时,我得到: PDOException:SQLSTATE[42S02]:找不到基表或视图:1146表'Playerd.SimpleTest311135表名

它尝试查找表SimpleTest311135 TABLENAME,同时应查找TABLENAME。它总是添加simpletest和一些随机数

当我对drupal默认表(如用户和会话)运行查询时,一切都很完美。有解决办法吗

吉安尼斯

实际功能是

function dlm_job_finished($jobId,$urls,$messageFromFS){
    $query    =  db_select('users','u');
    $query    -> fields('u',array('uid'));
    $d_alias  =  $query->innerJoin('dlm_user_auth_entities','d','%alias.uid = u.uid');
    $query    -> condition("{$d_alias}.jid",$jobId);
    $result   =  $query->execute();
    $message = variable_get('dlm_settings_email_message').'<br />';
    foreach ($result as $record) {
      foreach ($urls as $file_url_to_download){
        $message.= '<a href="'.$file_url_to_download.'">'.$file_url_to_download.'</a> <br /> ';
      }
      $message.=$messageFromFS.'<br />';      
      dlm_mail_notifier($record->uid,$message);
    }
  }

在测试类中,我使用的唯一函数是查询默认drupal数据库表的函数。另外,上面的函数也在工作,我以不同的方式调用了它,它也工作了,问题是我无法让它与Drupal的simpletesting模块一起工作

如果我误解了您的意思,请道歉,但我认为您正在尝试使用简单的内部联接运行查询?如果您的语法是错误的,那么应该如下所示:

$query = db_select('users','u')
  ->fields('u',array('uid'))
  ->condition('d.jid', $jobId);

$query->innerJoin('dlm_user_auth_entities', 'd', 'd.uid = u.uid');

$results = $query->execute();
问题在于您的状况:

`$query -> condition("{$d_alias}.jid",$jobId);`
分配给$d_alias的变量(在上述条件中用作别名)是从$query->innerJoin返回的,该变量不返回别名的字符串表示形式,而是返回一个对象。查询中得到的表名可能是该对象simpletest311135的字符串表示形式

当使用innerJoin的第二个参数时,该参数将成为在查询的其余部分中已知联接表的别名。因此,您可以使用->条件'd.jid',$jobId,如上面的示例所示


希望有帮助

您能发布导致此错误的特定代码行吗?请参阅上面编辑的版本!谢谢你的提示;我找不到使用别名的参考资料,但我也会在可能的情况下提供!不幸的是,我还是得到了同样的回答。如果我找到答案或者你有任何建议,我会回来的,欢迎!
`$query -> condition("{$d_alias}.jid",$jobId);`