2014-05-02 43 views
-2

我想在Extbase存儲庫中執行查詢,但它不返回任何結果。在Extbase存儲庫中執行純SQL查詢

這是我的語法,如果有人知道這個問題,請幫忙。

在存儲庫文件中;

public function getImages($uidOfCE, $pid) { 

    $query = $this->createQuery(); 
    $query->statement('SELECT sf.identifier,sfm.title,sfr.description 
     FROM tt_content AS tc 
     LEFT JOIN sys_file_reference sfr ON sfr.`uid_foreign` = tc.uid 
     LEFT JOIN sys_file AS sf ON sf.`uid` = sfr.uid_local 
     LEFT JOIN sys_file_metadata AS sfm ON sfm.`file` = sf.uid 
     WHERE tc.uid = '.$uidOfCE.' 
     AND tc.pid='.$pid.' 
     AND tc.list_type = "myimage_gallery" 
     AND sfr.`deleted` = 0 AND sfr.`hidden`= 0 
     AND tc.`deleted` = 0 AND tc.`hidden`= 0 AND tc.sys_language_uid ='.$GLOBALS['TSFE']->sys_language_uid.' 
     AND sfr.fieldname = "tx_myext_images" AND sfr.tablenames = "tt_content"'); 

    return $query->execute(); 
} 

在控制器:

$myimagegalleries = $this->myimagegalleryRepository->getImages(
$uidOfCE, $this->cObj->data['pid']); 

是否有可能創造extbase庫的自定義查詢?

+0

願此鏈接你的幫助http://docs.typo3.org/typo3cms/ExtbaseFluidBook/6-Persistence/3-implement-individual-database-queries.html –

回答

1
$Query = $this->createquery(); 
$Query->getQuerySettings()->setReturnRawQueryResult(TRUE); 
$Query->getQuerySettings()->setRespectStoragePage(FALSE); 
$Query->statement('your query'); 
return $Query->execute(); 

在你的控制器

class your_Controller_name extends \TYPO3\CMS\Extbase\Mvc\Controller\ActionController { 

    protected $myimagegalleryRepository; 

    public function yourAction() { 
     $myimagegalleries = $this->myimagegalleryRepository->getImages(
     $uidOfCE, $this->cObj->data['pid']); 
    } 
} 

setReturnRawQueryResult如果是真的,你會得到導致陣列。

儘量避免請看這裏警告:http://docs.typo3.org/typo3cms/ExtbaseFluidBook/6-Persistence/3-implement-individual-database-queries.html

0

如果可以使用Extbase QOM解決問題,那麼不鼓勵你做什麼,但是它可以工作。

如果它不返回任何結果,您的查詢的限制可能無法正確設置。

調試$uidOfCE$pid,以瞭解他們是否設置。如果沒有,修復它們。如果是,請在MySQL/phpMyAdmin中執行整個查詢並查看是否得到任何結果。如果您不這樣做,請修復您的查詢以使其正常工作。

+0

嗨洛倫茨,我查過這兩個$ uidOfCE和$ PID並正確顯示的值。我不知道提供空白結果的確切原因是什麼。你能幫我麼? –

+0

您是否也在phpMyAdmin中運行查詢? – lorenz

+0

是的。我得到了答案。感謝您的反饋。 –

0

我們無法猜測,如果你不能做到這一點...找到查詢的問題正在使語句記錄的最簡單的方法有什麼不對您的查詢,這樣你就可以將它複製並嘗試使用普通DB GUI運行,即'like in this tip(同時檢查Mateng的答案)。

我的個人它缺少存儲PID的配置,無論如何肯定測試語句會給你正確的答案,或至少有一些明智的線索。