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) –
我的建議是在嘗試添加表格位之前使左連接與硬編碼值一起工作 –