2012-03-07 30 views
9

Tôi đã tự hỏi nếu có một cách để echo ra các truy vấn đầy đủ với giới hạn và limitstart vv Tôi có thể echo ra dòng $ truy vấn, nhưng tôi muốn xem tại sao giới hạn không hoạt động và tôi dường như không thể làm cho nó hiển thị truy vấn thực tế mà nó gửi đến cơ sở dữ liệu. Đây là mã:echo truy vấn joomla đầy đủ (với giới hạn vv)?

$params =& JComponentHelper::getParams('com_news'); 
$limit = $params->get('x_items', 5); 
$limitstart = JRequest::getVar('limitstart', 0); 

$query = "SELECT * FROM #__news WHERE published = 1 AND catid = ".$Itemid." ORDER BY date DESC"; 
$db->setQuery($query, $limitstart, $limit); 
$rows = $db->loadObjectList(); 

$ db-> getQuery ($ query, $ limitstart, $ limit); chỉ hiển thị "SELECT * FROM jos_news ĐÂU bố = 1 AND CatID = 8 ORDER BY ngày DESC" mà doesnt có params LIMIT về sự kết thúc của truy vấn ..

Bất kỳ trợ giúp sẽ được đánh giá cao :)

Trả lời

3
var_dump($db);die; 

Thực hiện sau cuộc gọi loadObjectList(). Bên trong biến số $db phải có thuộc tính _sql là truy vấn cuối cùng được thực hiện.

20

Các JDatabaseQuery đối tượng có chức năng __toString() rằng kết quả đầu ra các truy vấn để bạn có thể làm:

echo $db->getQuery(); 

Hoặc nếu bạn muốn vượt qua nó để một chức năng bạn có thể rõ ràng đúc nó thành một chuỗi đầu tiên:

var_dump((string)$db->getQuery()); 
+1

Đây phải là câu trả lời được chấp nhận. Hoạt động rất tốt và chính xác là lý do tại sao nó được phát triển (tôi tưởng tượng). –

0

Đồng ý với câu trả lời trước, nhưng ... Trong trường hợp bạn đang phát triển các thành phần của riêng mình, vì tôi thường muốn biết chắc chắn chính xác những gì được thực thi, đây là một giải pháp đơn giản:

Trong các mô hình của bạn đặt:

$ db = JFactory :: getDBO(); echo $ db-> getQuery();

Trong trường hợp bạn muốn biết truy vấn ... Đừng đặt nó trong (ví dụ) tầm nhìn của bạn, vì nó có thể nạp một số danh sách thả xuống khác bằng cách thực hiện trong khi chờ đợi ...

Ví dụ:

Để có chế độ xem danh sách, hãy đặt nó ngay trước khi foreach ($ items ... trong hàm getItems công khai() của mô hình Trong dạng xem/biểu mẫu, hãy đặt ngay trước khi trả về $ data/return $ item trong hàm được bảo vệ loadFormData()/public function getItem ($ pk = null)

Hy vọng điều này sẽ giúp ...

0

Trên phiên bản joomla mới, bạn cần phải echo __toString() trên đối tượng truy vấn.

echo $query->__toString(); 

Tôi nhận thông tin này trên this joomla answer.

Hy vọng điều này sẽ giúp

Các vấn đề liên quan