@hollanditkzn

Как сохранить данные в бд?

Использую виджет yii2-multiple-input, немного не пойму в документации как сохранить данные в бд несколдбко значений
в гид если нужно все для просмотра модели и всей картины
Реализована вот так но в итоге
$models = [new Custom()];
$request = Yii::$app->getRequest();

Model::loadMultiple($models, Yii::$app->request->post())) {
            $data = Yii::$app->request->post('Custom', []);
            foreach (array_keys($data) as $index) {
                $models[$index] = new Custom();
            }

Пробовал добавлять $models->save() выходит ошибка Call to a member function save() on array
И пробовал $models[$index]->save(); то не сохраняет
Пробовал вывести ошибку
if(!$model->save()){
                Yii::warning($models[$index]->getErrors());
                }
Но тоже ничего не вышло. Запросы идут в виде
Custom[0][tovar]:Ручки
Custom[0][number]:10
как решить данную проблему?
  • Вопрос задан
  • 213 просмотров
Решения вопроса 1
qonand
@qonand
Software Engineer
// создаем на каждый набор данных в массиве модель
$data = Yii::$app->request->post('Custom', []);
$models = [new Custom()];
foreach (array_keys($data) as $index) {
    $models[$index] = new Custom();
}
// загружаем данные из запроса в массив созданных моделей
if (Model::loadMultiple($models, Yii::$app->request->post())) {
    foreach ($models as $model) {
        //сохраняем данные
        $model->save();
    }
}
Ответ написан
Пригласить эксперта
Ответы на вопрос 2
webinar
@webinar Куратор тега Yii
Учим yii: https://youtu.be/-WRMlGHLgRg
Call to a member function save() on array

Говорит, что Вы вызываете save() для массива, а метод save() есть только у объектов AR. Видимо надо перебрать массив, в нем будут объекты, к которым и применять метод save
Ответ написан
Ваш ответ на вопрос

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

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