使用 laravel 操作 mysql 时,若表中使用非自增例如 UUID 或其他自定义字符串主键,需要修改一些属性,否则在查询时会出现一些数据异常。
1. keyType
- 该字段设定了主键的数据类型。
- 要将其改为
string
,默认为int
。 - 默认情况下,会因为’纯数字字符串‘主键强制转换为 int 类型导致数据错误,’其他字符串‘会变为’0‘。
2. incrementing
- 该字段设定 model 是否维护自增主键。
- 要将其改为
false
,默认为true
。 - 默认情况下,
create
一条新数据后,无论使用getKey
方法还是直接获取返回模型的 id 属性都无法得到正确的主键值。
附:常用的 model 属性
- hidden:转换为数组是隐藏的字段
- visible:转换为数组时展示的字段
hidden 和 visible 同时包含一个字段时,该字段会隐藏
- attributes:为字段设定默认值
格式: - dates:为作为时间处理的字段
- dateFormat:时间格式设定
- observables:自定义的观察者
- dispatchesEvents:事件触发的 map
6、7 在下一篇详述