SilverStripe按has_one关系字段"title"排序

Mat*_*lis 6 php silverstripe

我有两个对象ScheduleLocationPage.对象Schedule与以下内容有$has_one关系LocationPage:

class Schedule extends DataObject {

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

    private static $has_one = array(
        'Location' => 'LocationPage',
    );
}
Run Code Online (Sandbox Code Playgroud)

class LocationPage extends Page {

    private static $db = [
        'Heading' => 'HTMLVarchar(250)',
        'SubHeading' => 'Varchar(250)'
    ];
}
Run Code Online (Sandbox Code Playgroud)

当我尝试按关系字段排序时,Title它会给我一个错误.这是排序代码:

 Schedule::get()->sort(['Location.Title' => 'ASC']);
Run Code Online (Sandbox Code Playgroud)

这是调用上面代码时得到的排序错误:

[用户错误]未捕获SS_DatabaseException:无法运行查询:SELECT DISTINCT"Schedule"."ClassName","Schedule"."LastEdited","Schedule"."Created","Schedule"."Date","Schedule" ."LocationID","Schedule"."ID",CASE WHEN"Schedule"."ClassName"IS NOT NULL那么"Schedule"."ClassName"ELSE'Instal'END AS"RecordClassName","LocationPage"."Title" AS"_SortColumn0"FROM"Schedule"LEFT JOIN"LocationPage"ON"LocationPage"."ID"="Schedule"."LocationID"INNER JOIN"Page"ON"LocationPage"."ID"="Page"."ID" INNER JOIN"SiteTree"ON"LocationPage"."ID"="SiteTree"."ID"ORDER BY"_SortColumn0"ASC未知列'LocationPage.Title'在'字段列表'中

是什么导致了这个问题?

Sam*_*née 0

此问题的解决方法是使 has_one 关系指向 SiteTree 而不是 LocationPage。