WorkToolSmith

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

太田アベル

・ 更新 ・ 1分で読めます

当サイトの記事には一部に広告リンクが含まれます。

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重になっていると問題ないようです。

太田アベル

太田アベル

パソコンを7歳からいじり始めて40年。とにかくパソコンが好きです。気になった商品をほぼ自腹で買いまくってレビュー中!良かった点、悪かった点をズバズバ書きます。

𝕏 でフォロー プロフィールを見る

こちらもおすすめ