我想在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();
});
}
或者是否有其他数据类型可以使用?因为我在文件中没有看到任何货币价值。如果你能帮忙的话,我将不胜感激。
2条答案
按热度按时间6bc51xsx1#
您可以使用decimal来精确存储价格值:
注意9是精度,比如1234567.89的精度是9,
而3是小数位数,即123456.789的小数位数为3
换句话说,如果我们使用的小数位数少于3,我们可以使用remaining作为实数位数。
标签:How do I interpret precision and scale of a number in a database?
或者,您也可以使用大整数并以基本货币单位(如美分)存储金额。就像这样:
如果我们想存储
$ 107.45
(107美元45美分),我们首先 * 乘以100*,然后将10745
存储在价格列中。在检索时 * 除以100*。换句话说,存储您认为需要的最小单位,就像存储厘米而不是米(Centi最初是希腊语中“0.01”数字的名称)。
uubf1zoe2#
有'decimal'类型为您的目的,它似乎罚款,除非你不想保存货币太:
文档中列出了可用类型。https://laravel.com/docs/5.4/migrations#creating-columns
如果你想用price来保存货币,你必须使用string,或者为currency-type创建一个新的列。