0
我有一个数据对象相关的一些其他数据对象,我试图为他们建立一个报告页面。SilverStripe 3左连接缺少参数
到目前为止,我已经在我的页面控制器中显示了一个表单,我将开始为报表选择过滤选项。
但是我得到这个错误是由于左连接:
[注意]缺少论据2的SQLQuery :: addLeftJoin()
这似乎是在raw2sql正在输出这当我已经调试:
\ 'AgeRangeData \' \ 'CallEvent.AgeRangeData ID = AgeRangeData.ID)\'
我假定反斜线是什么原因造成的错误
public function ReportingFilter(){
$DataObjectsList = $this->dbObject('DataObjects')->enumValues();
$fields = new FieldList(
new DropdownField('DataObjects', 'Data Objects', $DataObjectsList)
);
$actions = new FieldList(
new FormAction("FilterObjects", "Filter")
);
return new Form($this, "ReportingFilter", $fields, $actions);
}
public function FilterObjects($data, $form){
$data = $_REQUEST;
$query = new SQLQuery();
$object = $data['DataObjects'];
$leftJoin = Convert::raw2sql("'" . $object . "', 'CallEvent." . $object . " ID={$object}.ID)'");
$query->selectField("CallEvent.ID", "ID");
$query->setFrom('`CallEvent`');
$query->setOrderBy('CallEvent.Created DESC');
$query->addLeftJoin($leftJoin);
return $query;
}
没有时间测试这些并将它们添加为答案,但对于一些提示:Convert :: raw2sql应该用于转换值(或数组)而不是完整的查询语句。参见http://docs.silverstripe.org/en/3.1/developer_guides/security/secure_coding/。警告来自于你对addLeftJoin的使用,当它说缺少第二个参数时,它非常明确: $ query-> addLeftJoin($ leftJoin);应该或多或少 - > addLeftJoin($ tablename,$ joinstatement) –
我的建议是在尝试添加表格位之前使左连接与硬编码值一起工作 –