検索しても出てこなかったのでメモ。
バージョン:FuelPHP 1.8
Observerについてはこちらを参考にしました。
http://qiita.com/moroya/items/80f1746909aaf2fc6867
data_typeを指定すると連想配列をjson文字列に変化してDBに保存してくれるが、DBから取り出すとsrdClassに変換されてしまう。
この挙動はPHPのjson_decodeのデフォルト挙動と同じです。
http://php.net/manual/ja/function.json-decode.php
assoc = true
を指定すれば連想配列に変換してくれます。
FuelPHPでもjson_assoc => true
を指定することで同様の挙動になりました。
'colname' => [
'data_type' => 'json',
'json_assoc' => true,
],
fuel/packages/orm/classes/observer/typing.php
の該当部分
/**
* Decodes the JSON
*
* @param string value
*
* @return mixed
*/
public static function type_json_decode($var, $settings)
{
$assoc = false;
if (array_key_exists('json_assoc', $settings))
{
$assoc = (bool) $settings['json_assoc'];
}
return json_decode($var, $assoc);
}
json_assoc
という名前でオプションを投げればいいと分かりました。
調べても分からなかったらソースを見るのが一番ですね。