Я хочу получить мутированные/добавленные атрибуты модели larvel eloquent. Я попробовал $model->getAttributes()
, но он возвращает массив исходных атрибутов, поскольку они хранятся в базе данных. Но я хочу также получить измененные атрибуты, которые еще не сохранены в базе данных.Мутации/добавленные атрибуты Laravel Eloquent
Я попробовал $model->toArray()
, он возвращает массив необработанных и мутированных/добавленных атрибутов. Но преобразует значение поля date в строку.
Я использую mongodb как базу данных. «Дата» сохраняется как mongodate, но toArray()
преобразует ее в строку - «date»: «2011-03-23 12:00:00».
Поэтому, когда я пытаюсь сохранить эти измененные атрибуты, добавленные с toArray()
в базу данных, моя дата сохраняется в строке.
Есть ли другой способ получения измененных/добавленных атрибутов красноречивой модели?
Заранее спасибо.
Благодарим за сообщение. Но мне нужно вернуть поле «дата» из метода 'getDates()' из-за других зависимостей. Есть ли другой способ пропустить сериализацию даты в строки? – kshpra
Существуют и другие способы, но они требуют некоторого кодирования/взлома - то, что вы пытаетесь достичь, заключается в двух способах представления моделей, которые предоставляет Eloquent, - не сериализованной модели и модели, сериализованной для массива. Вы можете вернуть «дату» из getDates и определить getter для «date», который будет неэтериализовать поле. Вы можете просто добавить сеттеры для всех дат, которые преобразуют строки в объекты Carbon. Вы можете переписать метод toArray в своих объектах ... Не знаете, что будет лучше для вас, поскольку я не понимаю, почему вы хотите сохранить массив-сериализованный объект в Mongo вместо простого объекта. –
Спасибо. Я попробую это. – kshpra