问答 / 0 / 7 / 创建于 5年前
Laravel能自动转换 "true" 和 "false" 为 1 和 0 吗?
casts
属性类型转换 使用示例中给出的 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', ]; }
存储 true 和 false ,字段设置为 string,强制转换传值数据:(boolean) $request->input('field_name'');不知是否可行...
true
false
string
(boolean) $request->input('field_name'')
如果存入数据1-0 是不是要比true false 字段更小?直接存1-0 前台 true false 岂不是更好
可在 model 类中监听保存事件 protected static boot () ... static::saving(); 还可以把字段类型定义为 tinyint(1),model 类中定义属性 $casts
model
protected static boot () ... static::saving();
tinyint(1)
$casts
这事,,,我觉得还是前端处理比较好,也规范一点,,,或者你可以放到中间件里处理这个,,类似自带的 TrimStrings 和 ConvertEmptyStringsToNull 都是用来处理请求中数据的中间件。
TrimStrings
ConvertEmptyStringsToNull
你可以参考下,这 2 个中间件,都继承自 TransformsRequest,就是用来处理这种事的,,,
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);
我要举报该,理由是:
casts
属性类型转换
使用示例中给出的 boolean 转换即可满足,数据库存整型,取用是直接当做布尔值
存储
true
和false
,字段设置为string
,强制转换传值数据:(boolean) $request->input('field_name'')
;不知是否可行...如果存入数据1-0 是不是要比true false 字段更小?直接存1-0 前台 true false 岂不是更好
可在
model
类中监听保存事件protected static boot () ... static::saving();
还可以把字段类型定义为
tinyint(1)
,model
类中定义属性$casts
这事,,,我觉得还是前端处理比较好,也规范一点,,,或者你可以放到中间件里处理这个,,类似自带的
TrimStrings
和ConvertEmptyStringsToNull
都是用来处理请求中数据的中间件。你可以参考下,这 2 个中间件,都继承自
TransformsRequest
,就是用来处理这种事的,,,一般我会在后端准备好一份配置文件,并且和前端约定好,专门用于处理这种东西。
比如处理通用的状态
配置文件:
以及相应的转换方法