как сохранить объектную модель в массив в сеансе и поддерживать обновленные отношения с базой данных в laravel?

#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