簡體   English   中英

laravel eloquent model 無法存儲十進制值

[英]laravel eloquent model not able to store decimal values

我正在使用 Laravel 5.7 和 PHP 7.3 我必須在數據庫中存儲十進制字段

表列描述如下

'commission_percentage', 'decimal(12,4)'
'commission_amount', 'decimal(12,4)'

我正在嘗試使用 eloquent model 將此列的十進制值存儲在 mysql 中。

這是示例代碼。

$per = 10.23;
$commission = 2.1234;
$createArr = [    
                  'commission_percentage' => $per,
                  'commission_amount' =>  $commission
             ];
            
MyModel::create($createArr);

我的 eloquent model 看起來像

class MyModel extends Model
{
    protected $table = 'my_table';
    protected $guarded = ['id'];
    protected $casts = [
        'commission_percentage' => 'decimal:4',
        'commission_amount' => 'decimal:4'
    ];

}

而且我也試過

protected $casts = [
            'commission_percentage' => 'float',
            'commission_amount' => 'float'
        ];

但沒有運氣。 我仍然在數據庫中獲得 10.0000 和 2.0000。

即使我嘗試使用原始查詢插入值

DB::insert('insert into my_table (commission_percentage,commission_amount ) values(?, ?)', [$per, $commission]);

但是運氣不好,因為我仍然在數據庫中獲得 10.0000 和 2.0000。

我為此找到的解決方法是將變量類型轉換為“字符串”

$per = 10.23;
$commission = 2.1234;
$createArr = [    
                  'commission_percentage' => (string) $per,
                  'commission_amount' => (string) $commission
             ];
            
MyModel::create($createArr);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM