Как преобразовать строку в int в модели Laravel

#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.