Laravel по-русски

Русское сообщество разработки на PHP-фреймворке Laravel.

Ты не вошёл. Вход тут.

#1 31.03.2018 15:46:39

Как правильно хранить данные при модели но не для таблицы

Добрый день.

Из формы я получаю поля которые относятся к модели
Например скидка пользователя - выбирается пенсионер, ребенок и т.п.

Но в таблице пользователей таких полей нет и они не нужны там.
В конечном итоге это информация о заказе.

Удобно хранить их на момент обработки с пользователем - чтобы по алгоритмам оно там было, но перед сохранением я делаю вот так:

unset($man->prices, $man->spo_id); //fixme: А то не сохранится man при бронировке.

И это как-то выглядит неправильно.

Как я понимаю можно использовать guarded - но вроде как он не для этого задуман.

Подскажите как правильнее это сделать?

Не в сети

#2 31.03.2018 21:18:14

Re: Как правильно хранить данные при модели но не для таблицы

Добрый вечер.
Не совсем понятный вопрос.
Если вам данные нужно хранить временно.
Например, если пользователь нажал на кнопку "Купить", и эти данные надо хранить в "воздухе" до дальнейшей обработки, то лучше использовать сессию или куки.
Если их надо хранить не на стороне пользователя и на долго, то можно попробовать сохранять их в xml или json файлах.

Не в сети

#3 01.04.2018 07:32:58

Re: Как правильно хранить данные при модели но не для таблицы

В конечном итоге это информация о заказе? Так может и хранить в таблице с заказами?
Для себя я сделал вывод, что если случается подобный затык, значит надо пересмотреть логику процесса

Не в сети

#4 01.04.2018 10:48:55

Re: Как правильно хранить данные при модели но не для таблицы

Данные получаются из формы для заполнения человеков.
Потом они попадают в модель человеков.
Это вполне удобно и в целом разумно, на текущий момент.
Я не хочу переделывать эту часть сейчас.

Но перед тем как сделать man->save()
мне приходится эти данные убирать, потому что в таблице в бд нету полей для этого.

unset($man->prices, $man->spo_id); //fixme: А то не сохранится man при бронировке.

а вот это уже как то нелогично и мне не нравится.
И вопрос про это.

Не в сети

#5 01.04.2018 15:16:57

Re: Как правильно хранить данные при модели но не для таблицы

unset($man->prices, $man->spo_id); //fixme: А то не сохранится man при бронировке.

https://laravel.com/docs/5.6/eloquent#mass-assignment см. fillable
Оно?

Не в сети

#6 02.04.2018 21:36:32

Re: Как правильно хранить данные при модели но не для таблицы

Да в том то и дело, что неуверен.

И fillable и guarded подходят для выполнения задачи.

Но они предназначены для того чтобы в поле таблицы не записать что нить лишнее - опасное.

А тут ситуация как бы наоборот - в таблице нет таких полей. Но они есть в форме.

Наверно использую guarded.

Просто неужто такая вещь вообще никому не встречалась.

Не в сети

Подвал раздела