#php #laravel #laravel-nova
#php #ларавель #laravel-нова
Вопрос:
Я использую Laravel Nova для администрирования своего проекта. Однако я сохраняю определенные значения в своей базе данных, такие как проценты или цены, как x*100
. Почему я это делаю? Потому что при сохранении чисел *100
я могу сохранять их как int
вместо double
или float
.
Однако это приводит к проблеме, заключающейся в том, что я вижу число, которое сохраняется и умножается на 100 в базе данных на моей панели администрирования Laravel Nova. Я имею в виду, что я могу обойти это, используя resolveUsing
или displayUsing
(читайте здесь). Тогда, например 1530
, будет представлено, как 15,30
при погружении, 100
что является правильным.
Единственная проблема с этим заключается в том, что при вводе 100 в поле процент, например, оно также сохраняется как 100, а не как 10000 (100 * 100). Кто-нибудь знает, как я могу это реализовать?
Я также пытался использовать красноречивых наблюдателей. Но это не работает, потому что я попадаю в бесконечный цикл.
С наилучшими пожеланиями и спасибо вам!
Ответ №1:
Используйте средство доступа к модели и мутатор. https://laravel.com/docs/master/eloquent-mutators#defining-a-mutator
Если вы будете использовать mutator и accesor, вам следует удалить resolveUsing
и displayUsing
в объявлении полей ресурсов.
public function setAmountAttribute($value)
{
$this->attributes['amount'] = $value * 100;
}
public function getAmountAttribute($value)
{
return $value / 100;
}