@mr_garik

Создание checkboxlist, запись или обновление, значение 1 и 0 в БД?

Привет. Не могу решить проблему с checkboxlist. с отображением все в порядке.
view:
<?php $form = ActiveForm::begin([
        'id' => 'form-input-example',
        ],
    ]) ?>
    <?= $form->field($model, 'status_id')
        ->checkboxList(ArrayHelper::map(Blog::find()->all(), 'id', 'status_id')) ?>
    <?= Html::submitButton('Сохранить', ['class' => 'btn btn-primary']) ?>
    <?php ActiveForm::end(); ?>


BlogController:

public function actionTests()
    {
        $model = new Blog();

        $model->status_id = Blog::find()->where('status_id')->all();

        if ($model->load(Yii::$app->request->post()) && $model->save())
        {
// Сделать что-то после записи, например SetFlash

        }

        return $this->render('tests', [
            'model' => $model,
        ]);
    }

Blog(Model):
public function rules()
    {
        return [
            ['status_id', 'safe'],
        ];
    }

5c1d430cf13e9297392047.jpegТестовая БД
5c1e1b2f8756c803708349.jpeg
Как реализовать запись или обновление существующего значения? Через set и get?
Читал документацию, так и не могу понять как происходит реализация checkboxlist.
Помогите мне реализовать данный функционал))
  • Вопрос задан
  • 92 просмотра
Пригласить эксперта
Ответы на вопрос 1
maksim92
@maksim92
Yii Framework
В данном случае вы пытаетесь записать массив в строку status_id базы данных. Если хотите сохранить массив в строку используйте php функцию implode().

Например,
if ($model->load(Yii::$app->request->post())) {
            $model->status_id = implode(",", $model->status_id);
            if ($model->save()) {
                // Сделать что-то после записи, например SetFlash
            }
        }


Но лучше создать дополнительную таблицу "один ко многим", куда вы будете записывать ваш массив через foreach
foreach (Yii::$app->request->post()['status_id'] as status) {
...
}
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через TM ID
Похожие вопросы
Fmedia Санкт-Петербург
от 60 000 до 90 000 руб.
Рабочие решения Ростов-на-Дону
от 50 000 до 80 000 руб.
Alma Innovation Group Алматы
от 50 000 до 90 000 руб.