Laravel number_format () неверный, неверный перевод числа при перезагрузке и обновлении в базе данных

Мне нужна ваша помощь, чтобы понять таинственный способ, которым Laravel играет со мной и числами!

У меня есть вид на мой blade.php, где у меня есть несколько:

{!! Form::text('lim_dma',number_format($newclient-›lim_dma,2,'.',','),['class' =› 'form-control']) !!}

Пользователь впервые сохранит число , например 10000, и страница перезагрузит данные из моей базы данных, отображая 10 000,00.

Пока все хорошо.

Что я обнаружил, так это то, что если пользователь не меняет ничего и никаких данных на странице (в Form::text) и повторно отправляет данные в мой контроллер, Laravel берет то, что в данный момент отображается в текстовом поле (так 10 000,00), но обновляет его в моей базе данных как 10,00...

Очевидно, что Laravel понимает (плохо) запятую в 10 000,00, отображаемую благодаря number_format в моем файле blade.php.

Я пробовал играть с типом переменных ma в моей базе данных (я пробовал double, пробовал float => такой же плохой результат...). Я тоже пытался обмануть числовой формат, используя пробел вместо прихода в качестве разделителя тысяч, но Laravel это тоже не обманет...

Как вы делаете, ребята, в Laravel (у меня 5.1), чтобы пользователь мог хранить общий номер (например, 100000 или 50000), преобразовывать его или отображать с разделителем тысяч, не мешая после функции контроллера и части обновления моей модели (см. ниже) ?

$newclient= Techdata::where('id_client','=',$id_client)-›first();

$newclient-›update($request-›all());
С уважением,


person lekisscoolfr    schedule 14.03.2018    source источник


Ответы (1)


Добавьте мутатор в вашу модель Techdata (https://laravel.com/docs/5.1/eloquent-mutators):

public function setLimDmaAttribute($value) {
    $this->attributes['lim_dma'] = str_replace(',', '', $value);
}
person Jonas Staudenmeir    schedule 14.03.2018
comment
Привет, Джонас, Вау, черт возьми, это работает отлично! большое спасибо ! Есть еще часть Laravel, которую мне нужно открыть. На самом деле модели очень мощные! Хорошего дня ! - person lekisscoolfr; 15.03.2018
comment
Не могли бы вы пометить ответ как принятый? Это показывает другим пользователям, что проблема решена. - person Jonas Staudenmeir; 15.03.2018
comment
Привет, Джонас, я нажал на голосование, но мне сказали, что у меня еще нет 15 репутации, чтобы сделать это. Я тоже только что нажал на зеленую стрелку, раньше такого не видел. В очередной раз благодарим за помощь :) - person lekisscoolfr; 15.03.2018