我想在 Laravel 模式中创建一个价格列。
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();
});
}
或者我可以使用其他数据类型吗?因为我在文档中没有看到任何货币价值。任何帮助将不胜感激。
您可以使用小数来精确存储价格值:
$table->decimal('price', 9, 3);
注意 9 是精度,例如 1234567.89 的精度为 9,
3 是小数位数,即 123456.789 的小数位数为 3换句话说,如果我们使用的小数位少于 3 位,我们可以使用剩余的实数位。
也可以看看: 如何解释数据库中数字的精度和小数位数?
或者,您也可以使用大整数并以基本货币单位(如美分)存储金额。像这样:
$table->bigInteger('price');
因此,如果我们想存储
$ 107.45
(107 美元,45 美分),我们首先将 乘以 100 并将 10745
存储在价格列中。检索后除以 100。
换句话说,存储您认为需要的最低单位,例如存储厘米而不是米(厘最初是“0.01”数字的希腊语名称)。
有适合您用途的“十进制”类型,除非您也不想节省货币,否则似乎很好:
$table-> decimal('amount')
文档中列出了可用类型。 https://laravel.com/docs/5.4/migrations#creating-columns
如果您确实想用价格保存货币,则必须使用 string ,或者为货币类型创建一个新列可以是另一种解决方法。