Enables you to easily encode and decode json in your activerecords. It automatically encodes before validating and saving to database and decodes after.
The preferred way to install the library is through composer.
Either run
php composer.phar require --prefer-dist locustv2/yii2-json-data-behavior
or add
{
"require": {
"locustv2/yii2-json-data-behavior": "~1.0.0"
}
}
to your composer.json
file.
public function behaviors()
{
return [
'class' => \locustv2\behaviors\JsonDataBehavior::className(),
'dataAttribute' => 'hotel_data',
];
}
After configuring your activerecord as above, you can use as follows:
$model = Hotel::find()->one();
var_dump($model->getData('rooms')); // assume it returns a list of rooms
var_dump($model->getData('rooms.0.price')); // to get rooms data
$model->setData('ratings', [
'5star' => ['count' => 100],
'4star' => ['count' => 200],
'3star' => ['count' => 20],
'2star' => ['count' => 75],
'1star' => ['count' => 50],
]);
var_dump($model->getData('ratings.3star.count')); // returns 20
- Add unit tests
Feel free to send pull requests.
For license information check the LICENSE-file.