2013-12-21 15 views
0

我正在使用銀條紋版本2.4。我沒有更新到新版本,因爲我做了很多更改,現在我不可能遷移到新版本。在DataObject中寫入自定義SQL查詢:: get()

我有一個自定義SQL查詢,我希望查詢運行在DataObject :: get(); 這裏是我的查詢

SELECT STL。* FROM Page P加入SiteTree_Live STL上P.ID = STL.ID加入Site S於P.SiteID = S.ID其中S.ID = 60和STL.ShowInMenus = 1和STL.ParentID = 0和STL.CanViewType <>'NotLoggedInUsers'..

如何在DataObject :: get()中編寫此查詢?

任何幫助將不勝感激..謝謝

回答

0

最簡單的方法是使用ORM構建查詢,在2.4它可以這樣做(只工作,如果類Sitehas_manyPage,這我認爲這裏的情況):

$site = DataObject::get('Site', 'ID = 60'); 
// the line below assumes that the has_many in site is called "Pages" 
$pages = $site->Pages("ShowInMenus = 1 AND ParentID = 0 AND CanViewType <> 'NotLoggedInUsers'"); 

另外,如果你想使用的連接參數保存自己,爲網站額外的查詢,你可以用1數據對象做::得到()。應該看起來像這樣:

$pages = DataObject::get(
    'Page', 
    "Site.ID = 60 AND ShowInMenus = 1 AND ParentID = 0 AND CanViewType <> 'NotLoggedInUsers'", 
    null, 
    'LEFT JOIN Site ON Site.ID = Page.SiteID' 
);