在我的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');
欢迎任何其他解决方案。