Почему Laravel сохраняет каждое поле как «истинное» при представлении данных в массиве? - PullRequest
0 голосов
/ 22 января 2019

Итак, у меня есть следующий код:

$homepage = Homepage::first();
if (!$homepage) {
  $homepage = new Homepage;
}

$homepage->first_presta_title = $request->first_presta_title;
$homepage->first_presta_content = $request->first_presta_content;
$homepage->second_presta_title = $request->second_presta_title;
$homepage->second_presta_content = $request->second_presta_content;
$homepage->third_presta_title = $request->third_presta_title;
$homepage->third_presta_content = $request->third_presta_content;
$homepage->shiatsu_text = $request->shiatsu_text;
$homepage->shiatsu_image = $request->shiatsu_image;
$homepage->doin_text = $request->doin_text;
$homepage->doin_image = $request->doin_image;

$homepage->save();

Все работает, но я хотел посмотреть, не было ли лучшего способа сохранить данные, не присваивая каждый отдельный элемент его столбцу, затем яобнаружил, что кто-то отвечает на вопрос, используя следующий код:

$homepage->save($request->all());

Так что я попробовал это сам, но ничего не произошло: никаких ошибок, но также ничего не сохранено в моей базе данных.

Итак, есть ли самый быстрый способ сохранить данные?Можно ли использовать цикл для сохранения всего?

Заранее спасибо

Ответы [ 2 ]

0 голосов
/ 22 января 2019

Если вы хотите, чтобы модель автоматически заполнялась на основе заданного массива, вам нужно создать новый объект модели. Вот так

 $homepage = HomePage::create($request->all());
 $homepage->save()

Если вы присваиваете массив save(), он ожидает, что опции для сохранения не для значений для присвоения

Источник: API-интерфейсы Laravel для модели / сохранения ()

API-интерфейсы для модели :: create ()

0 голосов
/ 22 января 2019

Когда вы используете save(), вы фактически используете Массовое назначение .Таким образом, либо вы явно определяете все поля в вашей модели для массового назначения, либо вместо этого можете использовать create().

Однако в вашем конкретном случае весь метод может быть очищен до одной строки:

return Homepage::updateOrCreate($request->all());
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...