在我的Silverstripe 3.1事件日历模块中,我向CalendarEvent添加了一些其他字段。我想在模板中使用它们,但是从我的研究中我已经看到事件被导出为CalendarDateTime,因此我无法使用其他字段。

我发现在getStandardEvents函数中,我认为是导致此问题的内部联接,但是我无法弄清楚它是否可以联接CalendarEvent的列

$list = DataList::create('CalendarDateTime')
        ->filter(array(
            'EventID' => [139, 140, 141, 143]
        ))
        ->innerJoin('CalendarEvent', "EventID = \"{CalendarEvent}\".\"ID\"")
        ->innerJoin("SiteTree", "\"SiteTree\".\"ID\" = \"{CalendarEvent}\".\"ID\"")
        ->where("Recursion != 1");


注意:在我的代码中,我将某些列作为变量,因此我将它们写为要引用的值。
这是原始代码:

$list = DataList::create($datetimeClass)
        ->filter(array(
            $relation => $ids
        ))
        ->innerJoin($eventClass, "$relation = \"{$eventClass}\".\"ID\"")
        ->innerJoin("SiteTree", "\"SiteTree\".\"ID\" = \"{$eventClass}\".\"ID\"")
        ->where("Recursion != 1");


我试图将'CalendarEvent'添加为DataList :: create()中的第二个参数,但没有结果。我有相同的输出。

那么如何从CalendarDateTime和CalendarEvent表中选择列?
任何帮助将不胜感激。谢谢

最佳答案

我发现了一种手动方式:

$list = DB::query('SELECT * FROM "CalendarDateTime" INNER JOIN "CalendarEvent" ON "EventID" = "CalendarEvent"."ID" INNER JOIN "SiteTree" ON "SiteTree"."ID" = "CalendarEvent"."ID" WHERE "Recursion" != 1');


欢迎任何其他解决方案。

09-27 11:33