#laravel #eloquent
#laravel #красноречивый
Вопрос:
Я пытаюсь сохранить массив объектов модели (корзин) в сеансе, но проблема в том, что когда я распечатываю эти корзины, их отношения не обновляются с базой данных
Комментарии:
1. Пожалуйста, не используйте изображения для публикации кода. вставьте код в блок кода в вопросе.
2. Пожалуйста, отредактируйте вопрос, чтобы ограничить его конкретной проблемой с достаточной детализацией для определения адекватного ответа.
3. Я лично сохраняю идентификаторы только в сеансе -> меньший размер сеанса и обновляю модели в БД.
Ответ №1:
Существует 2 способа решения этой проблемы.
1 — сохраняйте только идентификатор Если вы сохраняете только идентификатор данных в сеансе, когда вы возвращаете модель из идентификатора, Eloquent правильно извлекает все отношения.
2 — Сериализация модели в сеансе Laravel и Eloquent предоставляют способ сериализации объектов и, в частности, моделей: https://laravel.com/docs/8.x/eloquent-serialization Сериализованная модель — это строка JSON, которую вы можете сохранить в сеансе.
Но вам нужно повторно увлажнить модель данными JSON, когда вы получаете их обратно из сеанса, так что, в конце концов, это не проще, чем сохранить идентификатор и перезагрузить модель из БД.
PS: Вы также можете взглянуть на кэширование модели, если вам нужно сохранить экземпляр модели, которая редко обновляется, чтобы сохранить доступ к базе данных: https://laravel-news.com/laravel-model-caching