看板 Mesak
作者 標題 [PHP] YII2 JSON 儲存載入
時間 2015-11-06 Fri. 11:54:38
有些欄位要利用 JSON 存取純資料欄位,可利用 Event 寫入與讀取的方式來把資料處理過再丟回
參考https://github.com/yiisoft/yii2/issues/3495
public function behaviors()
{
return [
'json_save' => [
'class' => 'yii\behaviors\AttributeBehavior',
'attributes' => [
self::EVENT_BEFORE_UPDATE => ['data'],
self::EVENT_BEFORE_INSERT => ['data'],
],
'value' => function ($event) {
}
],
'json_load' => [
'class' => 'yii\behaviors\AttributeBehavior',
'attributes' => [
'value' => function ($event) {
if( Json::is_json($this->data) ) {
}
],
];
}
{
return [
'json_save' => [
'class' => 'yii\behaviors\AttributeBehavior',
'attributes' => [
self::EVENT_BEFORE_UPDATE => ['data'],
self::EVENT_BEFORE_INSERT => ['data'],
],
'value' => function ($event) {
if ( !Json::is_json($this->data) ) {
$this->data = Json::encode($this->data);
}
return $this->data;
}
],
'json_load' => [
'class' => 'yii\behaviors\AttributeBehavior',
'attributes' => [
self::EVENT_AFTER_FIND => ['data'],
],
'value' => function ($event) {
if( Json::is_json($this->data) ) {
return Json::decode($this->data);
}
}
],
];
}
'data' 必須是欄位名稱,可以是字串 OR 陣列
驗證部分要加一個 saft 才會儲存
public function rules()
{
return [
[['data'], 'safe'],
];
}
--{
return [
[['data'], 'safe'],
];
}
Mesak Blog
http://mesak.tw
--
※ 作者: mesak 時間: 2015-11-06 11:54:38
※ 編輯: mesak 時間: 2015-11-06 11:56:07
※ 看板: Mesak 文章推薦值: 0 目前人氣: 0 累積人氣: 162
回列表(←)
分享