2012-04-01 70 views
0

這是一個較大的查詢,我在phpmyadmin制定的一個子集,但我有點迷路和混淆在獲取它的語法在Joomla中創建的組件中工作。Joomla:似乎無法刪除或創建表,甚至刪除行使用JDatabase

,在phpMyAdmin的工作代碼:

$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 statment即使它並沒有引發錯誤:

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語法錯誤的代碼它沒有丟掉表格,也沒有顯示在調試器中,所以我可能沒有正確使用它: http://api.joomla.org/Joomla-Platform/Database/JDatabase.html#dropTable

似乎無法找到y參考創建除了這個: 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

令人沮喪的工作!任何人有任何想法?

謝謝!

+0

你可以打印查詢,這樣你就可以看到它是否被DB類正確解釋了嗎? – 2012-04-01 19:42:08

+0

如果我' (這可能是一個很大的if!),那麼dropTable沒有顯示出來,在那裏拋出一個'print_r($ query);',dropTable沒有顯示出來,但是查詢的其餘部分(' ......'那個工作的部分)做了,它也沒有出現在調試器中,爲什麼我認爲我沒有正確使用它,但找不到好的例子。 – Gisto 2012-04-01 20:01:49

回答

0

你可以嘗試以下 -

$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'); 
0

的問題應該是一個事實,即$查詢是類JDatabaseQuery的,因爲你的初始化,所以它只有在這裏列出的方法:http://docs.joomla.org/JDatabaseQuery/1.6

您試圖調用的方法實際上是JDatabase的方法,您最後創建一個實例。所以,你應該可以做$ db-> createTable(... etc,它會實際運行)