这是要保存在 mysql 1 - 4.9 上的啥数据类型

Posted

技术标签:

【中文标题】这是要保存在 mysql 1 - 4.9 上的啥数据类型【英文标题】:what datatype is this to save on mysql 1 - 4.9这是要保存在 mysql 1 - 4.9 上的什么数据类型 【发布时间】:2016-12-16 06:19:10 【问题描述】:

我想在我的 mysql 数据库上保存从 1 到 4.9 的风格评级,请问我应该使用什么数据类型?当我将其保存为小数(11,0)时,我不断收到此错误

helpers.php 第 747 行中的 ErrorException: 方法 App\Wasamar\Rating::__toString() 必须返回一个字符串值

我的代码

$allInputs = Input::all();
    $catalogueStyleId = Input::get('catalogueStyleId');
    $userId = Crypt::decrypt( Input::get('user') );
    $rating = Input::get('rating');


    $countUserStyleRating = count( Rating::where('catalogue_style_id',$catalogueStyleId)->where('user_id','=', $userId)->first() );

    if ( $countUserStyleRating == 0 ) 
        # add new rating data

        $rating = new Rating;
        $rating->user_id = $userId;
        $rating->catalogue_style_id = $catalogueStyleId;
        $rating->catalogue_style_rating = $rating;
        $rating->save();

        echo "Your rating has been noted thank you";
    

【问题讨论】:

【参考方案1】:

问题是您的十进制定义没有指定小数点。 DECIMAL(11,0) 表示您要存储小数点左边的 11 位数字,后面没有。

如果要存储 0.1 到 4.9,则需要将小数定义为 DECIMAL(2,1)。 2 表示您要存储两位总数,而 1 表示您要在小数点右侧保留 1 个数字。

来自文档:

DECIMAL 列的声明语法是 DECIMAL(M,D)。这 MySQL 5.7 中参数的取值范围如下:

M 是最大位数(精度)。它有一系列 1 到 65。

D 是小数点右边的位数( 规模)。它的范围是 0 到 30,并且不能大于 M

MySQL Documentation

【讨论】:

以上是关于这是要保存在 mysql 1 - 4.9 上的啥数据类型的主要内容,如果未能解决你的问题,请参考以下文章

React-Native AsyncStorage 使用 iPhone 模拟器将数据保存在磁盘上的啥位置?

sql数据库保存在硬盘的啥位置? [复制]

mysql的datetime对应java的啥类型,我用date读不出来

mysql中的longblob对应java中的啥类型

mysql的datetime对应java的啥类型,我用date读不出来

两个质数相乘的积一定是啥数