FuelPHPでModelのWhereを入力するとエラーになる

FuelPHPでModel-query()で検索条件を渡す際、

RuntimeException [ Error ]:
Object class “Orm\Query” could not be converted to string or sanitized as ArrayAccess. Whitelist it in security.whitelisted_classes in app/config/config.php to allow it to be passed unchecked.

というエラーになる場合があります。
この場合、Ormのクエリをwhitelistに追加しなければならないようです。

 

app/config/config.phpに

'whitelisted_classes' => array(
'Fuel\\Core\\Response',
'Fuel\\Core\\View',
'Fuel\\Core\\ViewModel',
'Closure',
'Orm\\Query'
),

Orm\\Queryを追加します。これでWhiteListとして扱われ、クエリが通りました。この動作はいまいち理解できていないのでさらに勉強中です。

 

(追記)

上記の方法はセキュリティ上問題のあるクエリでも通してしまう可能性があります。安易にはおすすめできない方法でした。

where句はarray()で包んで渡せば良いようです。

Model_Example->find('all', array('where' => array( array('a', '=', 10))));

1つのwhereだとしてもarrayが2重になっていると問題ないようです。