Silverstripe ORM:boolean的奇怪行为 - > filter()

时间:2014-06-17 07:31:26

标签: mysql orm silverstripe

我对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错误......

0 个答案:

没有答案