#php #laravel #casting
#php #laravel #Кастинг
Вопрос:
Это мое решение. Я написал это внутри моего класса Model. (ratings — это строковый тип)
$code = (int)$ratings;
Но мне нужно изменить $ ratings при извлечении его из базы данных.
как я могу это сделать?
Ответ №1:
у нас есть свойство модели с именем cast
, в котором вы можете указать имена ваших столбцов, как показано ниже:
/**
* The attributes that should be cast to native types.
*
* @var array
*/
protected $casts = [
'ratings' => 'integer',
];
Ответ №2:
Из документации Laravel:
Приведение атрибутов
Свойство $casts в вашей модели предоставляет удобный метод преобразования атрибутов в обычные типы данных. Свойство $casts должно быть массивом, где ключ — это имя приводимого атрибута, а значение — тип, к которому вы хотите привести столбец. Поддерживаемые типы приведения: integer, real, float, double, decimal:, string, boolean, object, array, collection, date, datetime и timestamp. При приведении к десятичной системе счисления необходимо определить количество цифр (десятичная система счисления: 2).
<?php
namespace App;
use IlluminateDatabaseEloquentModel;
class User extends Model
{
/**
* The attributes that should be cast.
*
* @var array
*/
protected $casts = [
'ratings' => 'integer',
];
}
Атрибуты, имеющие значение null, не будут приведены. Кроме того, вы никогда не должны определять приведение (или атрибут), который имеет то же имя, что и отношение.
Ответ №3:
попробуйте это:
protected $casts = [
'ratings' => 'integer'
];
Ответ №4:
Вы добавляете атрибуты в Eloquent, добавляя protected $casts
int в свою модель :
protected $casts = [
'ratings' => 'integer',
];
Это преобразует ваше поле в целое число, используя return (int) $value.