@hollanditkzn

Как сохранить в бд, по выборке и привязать в json объект?

Вопрос, может быть не понятен, но у меня есть создание тестов, там 1 вопрос и 4 варианта ответа. Неважно сколько вопросов пользователь создал, главное это 4 ответа. Вывести вопросы было легко, но вот ответы, чтобы они каждый 4 ответа привязывались к одному вопросу стало сложнее для меня. И мне нужно в бд отправлять в json формате, то есть их делать json_encode чтобы получил вот такую строку
{"0": "Ответ 5", "1":"Ответ 6", "2":"Ответ 7", "3"...

Я получаю вот какие даныне
Question	[
    1 => 'ФОЛВЛ'
    2 => 'nnbslb'
]
Answer	[
    1 => 'KNKLLV'
    2 => 'VNSDLVNS'
    3 => 'nvslds'
    4 => 'vdsnkvsl'
    5 => 'nsldkvklsdv'
    6 => 'vlskdnvkls'
    7 => 'vlskdvklsd'
    8 => 'vsdlvnklsd'
]

То есть там 1 вопрос должен содержать до 4, 2 вопрос 4-8 ответа.
Я пробовал но у меня пока не получается придумать как их брать
public function actionCreate()
    {
        $model = new Questions();
        $request = Yii::$app->request;
        $question = $request->post('Question');
        $answer = $request->post('Answer');
        if ($question){
            foreach ($question as $value){
                $model->name = $question;
                foreach ($answer as $key => $item){
// Вот тут я не могу понять как сохранить такие данные и их правильно раскидать
                }
            }
        }
        return $this->render('create', ['model' => $model]);
    }

В бд хранятся 1 вопрос и 4 варианта ответа в виде (string json)
  • Вопрос задан
  • 156 просмотров
Пригласить эксперта
Ответы на вопрос 3
slo_nik
@slo_nik Куратор тега Yii
Добрый день.
Используйте три таблицы, первая - вопросы, вторая - ответы, третья - связующая, где будут храниться id вопроса и ответов.
В моделях создайте соответствующие связи, в базе создайте первичные ключи.
Ответ написан
webinar
@webinar Куратор тега Yii
Учим yii: https://youtu.be/-WRMlGHLgRg
Не совсем понимаю в чем именно проблема?
конвертировать массив в json и обратно? Тогда есть
www.yiiframework.com/doc-2.0/yii-helpers-json.html
да и встроенные в php функции
php.net/manual/ru/function.json-encode.php
php.net/manual/ru/function.json-decode.php
ну и в afterFind преобразуете в json, а в beforeSave наоборот в массив
Ответ написан
Isolution666
@Isolution666
Full-Stack Developer
Чтобы не говорили, что это придумал я, просто изучите файл:
https://github.com/samdark/yii2-cookbook/blob/mast...
Думаю, теперь вы сможете в разных форматах сохранять информацию ))
Можно конечно как Максим Тимофеев предложил, но уже ведь всё готово, достаточно одной строчки, и данные уже в другом формате.
Ответ написан
Комментировать
Ваш ответ на вопрос

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

Похожие вопросы