Я хочу сохранить рейтинги стилей в диапазоне от 1 до 4,9 в моей базе данных MySQL, пожалуйста, какой тип данных я должен использовать? и я продолжаю получать эту ошибку, когда я сохраняю ее как десятичное число (11,0)
ErrorException в строке 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 из этих цифр справа от десятичной точки.
Из документации:
Синтаксис объявления для ДЕСЯТИЧНЫЙ столбец ДЕСЯТИЧНАЯ (M, D).
диапазоны значений для аргументов в MySQL 5.7 следующие:M максимальное количество цифр (точность). Имеет ряд
От 1 до 65D количество цифр справа от десятичной точки (
масштаб). Он имеет диапазон от 0 до 30 и не должен превышать M.
Других решений пока нет …