我想在我的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";
}
答案 0 :(得分:3)
问题是你的小数定义没有指定小数点。 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 。