数据自动完成指在不需要手动赋值的情况下对字段的值进行处理后写入数据库。
支持auto、insert和update三个属性
分别在写入、新增和更新的时候进行字段的自动完成机制auto属性自动完成包含新增和更新操作
定义User模型类如下:
<?php
namespace app\index\model;
use thinkModel;
class User extends Model{
protected $auto = ['name', 'ip'];
protected $insert = ['status' => 1];
protected $update = [];
protected function setNameAttr($value){
return strtolower($value);
}
protected function setIpAttr(){
return request()->ip();
}
}数据自动完成如果需要写入固定的值 可以直接指定(例如上面的status字段固定写入了1) 类似于数据表字段的默认值功能。
在新增数据的时候 会对name、ip和 status 字段自动完成或处理。
$user = new User; $user->name = 'Think'; $user->save(); echo $user->name; // think echo $user->status; // 1
在更新数据的时候 会自动处理name字段的值及完成ip字段的赋值。
$user = User::find(1); $user->name = 'THINK'; $user->save(); echo $user->name; // think echo $user->ip; // 127.0.0.1
数据自动完成仍然还是调用的修改器 要注意避免数据被两次处理的可能 自动完成定义的属性不要和表单提交的冲突。

尊贵的董事大人
英文标题不为空时 视为本栏投稿
需要关键字 描述 英文标题