php 在Laravel Schema中创建Price列

vaqhlq81  于 2023-10-15  发布在  PHP
关注(0)|答案(2)|浏览(117)

我想在laravel模式中创建一个price列。

public function up()
{
    Schema::create('cameras', function (Blueprint $table) {
        $table->increments('id');
        $table->string('name');
        $table->string('condition');
        $table->string('price');
        $table->string('type');
        $table->timestamps();
    });
}

或者是否有其他数据类型可以使用?因为我在文件中没有看到任何货币价值。如果你能帮忙的话,我将不胜感激。

6bc51xsx

6bc51xsx1#

您可以使用decimal来精确存储价格值:

$table->decimal('price', 9, 3);

注意9是精度,比如1234567.89的精度是9,

而3是小数位数,即123456.789的小数位数为3
换句话说,如果我们使用的小数位数少于3,我们可以使用remaining作为实数位数。
标签:How do I interpret precision and scale of a number in a database?
或者,您也可以使用大整数并以基本货币单位(如美分)存储金额。就像这样:

$table->bigInteger('price');

如果我们想存储$ 107.45(107美元45美分),我们首先 * 乘以100*,然后将10745存储在价格列中。在检索时 * 除以100*。
换句话说,存储您认为需要的最小单位,就像存储厘米而不是米(Centi最初是希腊语中“0.01”数字的名称)。

uubf1zoe

uubf1zoe2#

有'decimal'类型为您的目的,它似乎罚款,除非你不想保存货币太:

$table-> decimal('amount')

文档中列出了可用类型。https://laravel.com/docs/5.4/migrations#creating-columns
如果你想用price来保存货币,你必须使用string,或者为currency-type创建一个新的列。

相关问题