我对Silverstripe ORM有一个奇怪的问题。控制器中的函数从db中检索项目,同时选择是否设置了布尔标志:
function getMosaic($page_type) {
//$page_type = "isPageFilter"; //when uncommented,it works!
return Mosaic::get()->filter($page_type,1)->toArray();
}
$this->getMosaic("isPageFilter");
奇怪的是,这会产生错误:
无法运行查询:SELECT DISTINCT" Mosaic"。" ClassName", " Mosaic"。"创建"," Mosaic"。" LastEdited"," Mosaic"。" Type& #34 ;, " Mosaic"。"尺寸"," Mosaic"。" HomePage"," Mosaic"。" FilterPage& #34 ;, " Mosaic"。" DetailPage"," Mosaic"。" Position"," Mosaic"。" PackageID& #34 ;, " Mosaic"。" ID",CASE WHEN" Mosaic"。" ClassName"那不是空的 "马赛克""的ClassName" ELSE' Mosaic'结束AS" RecordClassName"从 "马赛克"在哪里(" 1" =' 1')未知栏' 1'在' where子句'
更让人感到奇怪的是,当我取消注释" $ page_type =" isPageFilter"时,它就可以了!
当我这样做时:
$page_type2 = $page_type."2";
return Mosaic::get()->filter($page_type,1)->filter($page_type2,1)->toArray();
现在我也收到错误(列inPageFilter2不存在),但" 1" =" 1"已被替换为bij" isPageFilter" = 1。
我有点大吃一惊,我想知道我是否需要一个好的驱魔人,我自己会有点生气,或者如果我只是一点点老而忽略了明显的东西......
更新:我将代码更改为
Mosaic::get()->where("'".$page_type."' = 1")->toArray();
现在它有效。我想我正处于一个Silverstripe错误......