讨论数量:
属性类型转换
使用示例中给出的 boolean 转换即可满足,数据库存整型,取用是直接当做布尔值
$query->where('is_admin', true)
<?php
namespace App;
use Illuminate\Database\Eloquent\Model;
class User extends Model
{
/**
* 这个属性应该被转换为原生类型.
*
* @var array
*/
protected $casts = [
'is_admin' => 'boolean',
];
}
可在 model
类中监听保存事件 protected static boot () ... static::saving();
还可以把字段类型定义为 tinyint(1)
,model
类中定义属性 $casts
这事,,,我觉得还是前端处理比较好,也规范一点,,,或者你可以放到中间件里处理这个,,类似自带的 TrimStrings
和 ConvertEmptyStringsToNull
都是用来处理请求中数据的中间件。
你可以参考下,这 2 个中间件,都继承自 TransformsRequest
,就是用来处理这种事的,,,
一般我会在后端准备好一份配置文件,并且和前端约定好,专门用于处理这种东西。
比如处理通用的状态
配置文件:
class TransMapConf
{
//通用状态
const Status = [
'disable' => [
'value' => 0,
'name' => '不可用'
],
'enable' => [
'value' => 1,
'name' => '可用'
]
];
..........................
}
以及相应的转换方法
//将前端传的"disable" / "enable" 转换为0 / 1对应到数据库
$status = getTransMapValue(TransMapConf::Status, $status);
//将数据库的 0 / 1 转换为"disable" / "enable"返回给前端
$status = getTransMapKey(TransMapConf::Status, $status);
推荐文章: