public function save()
 {
     if (!$this->validate()) {
         return false;
     }
     $customField = new CustomFields();
     $customField->attributes = $this->attributes;
     $customField->save();
     return true;
 }
 public static function getCustomFieldsArray($tour_id)
 {
     $query = new Query();
     $query->from(CustomFields::tableName())->where([CustomFields::FIELD_TOUR_ID => $tour_id]);
     $result = $query->all();
     return $result;
 }
 public function actionBookPlace($tour_date_id)
 {
     $model = new BookingsForm();
     $tour_date = ToursDates::findOne($tour_date_id);
     $query = new Query();
     $custom_fields = CustomFields::getCustomFieldsArray($tour_date->tour_id);
     if ($model->load(Yii::$app->request->post()) && $model->save()) {
         Yii::$app->session->setFlash('success', 'Congratulations! Places successful booked');
         return $this->redirect(['tour-details', Tours::FIELD_TOUR_ID => $tour_date->tour_id]);
     }
     return $this->render('book_place', ['model' => $model, 'tour_date' => $tour_date, 'custom_fields' => $custom_fields]);
 }
use app\models\Bookings;
use app\models\CustomFields;
?>
<div class="col-sm-12">
	<div class="panel panel-default">
		<div class="panel-heading">
			<?php 
echo Html::tag('h4', $model->date);
?>
		</div>
		<div class="panel-body">
			<h5 >Booked places</h5>
			<?php 
echo GridView::widget(['dataProvider' => new ActiveDataProvider(['query' => Bookings::find()->where([Bookings::FIELD_TOUR_DATE_ID => $model->tour_date_id])]), 'columns' => [Bookings::FIELD_NAME, Bookings::FIELD_ADULTS, Bookings::FIELD_CHILDREN, Bookings::FIELD_BABIES, ['class' => DataColumn::className(), 'format' => 'html', 'attribute' => Bookings::FIELD_CUSTOM_FIELDS, 'value' => function ($model) {
    /* @var $model Bookings */
    $result = 'Not set';
    if (isset($model->custom_fields)) {
        $result = null;
        $custom_fields = unserialize($model->custom_fields);
        foreach ($custom_fields as $key => $value) {
            $custom_field = CustomFields::findOne($key);
            $result .= '<b>' . $custom_field->label . ': </b>' . $value . '<br>';
        }
    }
    return $result;
}]]]);
?>
		</div>
	</div>
</div>
 public function actionDeleteCustomField($custom_field_id)
 {
     $custom_field = CustomFields::findOne($custom_field_id);
     if ($bookings = Bookings::findAll([Bookings::FIELD_TOUR_DATE_ID => $custom_field->tour_id])) {
         Yii::$app->session->setFlash('danger', 'This custom field can not delete because it contains in reserved places records');
         return $this->redirect(['edit-tour', Tours::FIELD_TOUR_ID => $custom_field->tour_id]);
     }
     $custom_field->delete();
     Yii::$app->session->setFlash('success', 'Tours date successful deleted');
     return $this->redirect(['edit-tour', Tours::FIELD_TOUR_ID => $custom_field->tour_id]);
 }