2017-06-15 10 views
6

私は2つのオブジェクトScheduleLocationPageを持っています。私はそれは私にエラーを与える関係フィールドTitleでソートしようとするとSilverStripeソート順has_one関連フィールド "title"

class Schedule extends DataObject { 

    private static $db = array(
     'Date' => 'Date', 
    ); 

    private static $has_one = array(
     'Location' => 'LocationPage', 
    ); 
} 

class LocationPage extends Page { 

    private static $db = [ 
     'Heading' => 'HTMLVarchar(250)', 
     'SubHeading' => 'Varchar(250)' 
    ]; 
} 

:オブジェクトScheduleLocationPageから$has_one関係を持っています。ここでは、ソート・コードは次のとおりです。[ユーザーエラー]キャッチされないSS_DatabaseException

:ここ

Schedule::get()->sort(['Location.Title' => 'ASC']); 

は、上記のコードを呼び出すときに私が得るソート・エラーであるクエリを実行できませんでした:DISTINCT「スケジュールを選択しますスケジュール "、"スケジュール "、"スケジュール "、"日付 "、"スケジュール "、"ロケーションID "、"スケジュール "、" ID "、CASE WHEN"スケジュール"" ClassName "は"スケジュール "、" ClassName "はELSE 'スケジュール' END AS" RecordClassName "、" LocationPage "、" Title "AS" _SortColumn0 "FROM"スケジュール "LEFT JOIN" LocationPage "ON" LocationPage " "ID" = "スケジュール" "LocationID" INNER JOIN "Page" ON "LocationPage"。 "ID" = "ページ"。 "ID" INNER "LocationPage" ON "SiteTree"。 "ID" = "SiteTree" "_SortColumn0" ASC不明な列 'LocationPage.Title' 'フィールドリスト' は、この問題を引き起こしている何

でBY。 "ID" 結合順序を?

+1

これは、これがシルバーストライプバグであることを縫い合わせています。私は問題を開いた。うまくいけば、彼らはこれを修正します。 –

+1

この問題は参考用です:https://github.com/silverstripe/silverstripe-framework/issues/7029 –

答えて

0

この問題の回避策は、has_one関係がLocationPageではなくSiteTreeをポイントするようにすることです。

関連する問題