Joomla:似乎无法使用JDatabase删除或创建表甚至删除行



这是我在phpmyadmin中完成的一个较大查询的子集,但我对在Joomla中构建的组件中使用它的语法有点迷失和困惑。

phpmyadmin:中的代码

drop table if exists tests_mod_ques;
create table tests_mod_ques as
select p.student_userid, q.question_mod, q.question_id, p.student_passedchk
from `tests_students` p 
inner join `tests_questions` q on p.question_id = q.question_id
group by  p.student_userid, q.question_mod, q.question_id, p.student_passedchk
;

引发1064语法错误的代码:

$query = parent::getListQuery(); 
$query->dropTable('#__tests_mod_ques', 'true');
$query->createTable('#__tests_mod_ques AS 
    select (p.student_userid
    , q.question_mod
    , q.question_id
    , p.student_passedchk)
    ');
$query->from('#__tests_students AS p');
$query->join('#__tests_questions AS q ON p.question_id = q.question_id');
$query->group('p.student_userid
    , q.question_mod
    , q.question_id
    , p.student_passedchk
    '); 
  ....  
    $db = $this->getDbo();
    return $query;  

我只测试了dropTable语句,即使它没有抛出错误,它也没有删除表,也没有显示在调试器中,所以我可能没有正确使用它:http://api.joomla.org/Joomla-Platform/Database/JDatabase.html#dropTable

除了以下内容之外,似乎找不到任何要创建的引用:http://api.joomla.org/Joomla-Platform/Database/JDatabase.html#getTableCreate

此外,我还有一个INSERT…ON DUPLICATE KEY UPDATE查询,我也不确定如何处理。

谢谢!

编辑

我尝试过删除行作为一种变通方法,但也没有注册。再次检查调试器,删除查询没有显示。

$query->delete('#__tests_mod_ques');

这应该根据http://api.joomla.org/Joomla-Platform/Database/JDatabaseQuery.html#$deletehttp://docs.joomla.org/JDatabaseQuery::delete/1.6 工作

令人沮丧!有人知道吗?

谢谢!

您可以尝试以下操作-

$query->createTable('#__tests_mod_ques AS 
select (p.student_userid
, q.question_mod
, q.question_id
, p.student_passedchk)
from #__tests_students AS p
inner join #__tests_questions AS q ON p.question_id = q.question_id
group by p.student_userid
, q.question_mod
, q.question_id
, p.student_passedchk');

问题应该是$query属于JDatabaseQuery类,因为您是如何初始化它的,所以它只有下面列出的方法:http://docs.joomla.org/JDatabaseQuery/1.6

您试图调用的方法实际上是JDatabase的方法,您在最后创建了它的实例。因此,您应该能够执行$db->createTable(…等操作,它将实际运行。

相关内容

  • 没有找到相关文章

最新更新