Я хочу сохранить рейтинги стиля, которые варьируются от 1 до 4.9 в моей базе данных mysql, какой тип данных я должен использовать? и я продолжаю получать эту ошибку, когда я сохраняю ее как десятичную (11,0)
ОшибкаException в строке helpers.php 747: Метод 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"; }
Проблема в том, что ваше десятичное определение не указывает десятичных точек. DECIMAL(11,0)
означает, что вы хотите сохранить 11 цифр слева от десятичной точки и ни один после.
Вам нужно определить десятичное значение как DECIMAL(2,1)
если вы хотите хранить от 0,1 до 4,9. 2 означает, что вы хотите сохранить две полные цифры, а 1 означает, что вы хотите 1 из этих цифр справа от десятичной точки.
Из документации:
Синтаксис объявления для столбца DECIMAL – DECIMAL (M, D) . Диапазоны значений аргументов в MySQL 5.7 следующие:
M – максимальное количество цифр (точность). Он имеет диапазон от 1 до 65.
D – количество цифр справа от десятичной точки (шкалы). Он имеет диапазон от 0 до 30 и должен быть не больше М.
Документация MySQL