Read
查询操作应当静态调用,更新和删除操作则动态调用
// 查询单个记录
$this->where('name', 'thinkphp')->find();
// 调用动态查询方法
$this->getByName('thinkphp');
// 查询数据集
$this->where('id', '>', 0)->limit(10)->order('id desc')->select();
// 删除数据
$this->where('status', 0)->delete();
查询范围
namespace app\index\model;
use think\Model;
class User extends Model{
// email查询
protected function scopeEmail($query){
$query->where('email', 'thinkphp@qq.com');
}
// status查询
protected function scopeStatus($query){
$query->where('status', 1);
}
// 全局查询范围:每次查询的时候自动调用
protected static function base($query){
// 查询状态为1的数据
$query->where('status', 1);
}
// 临时关闭全局查询范围
User::useGlobalScope(false)->get(1);
}
// 使用
$users = User::scope('email,status')->all();
// 生成
SELECT * FROM `user` WHERE `email` = 'thinkphp@qq.com' AND `status` = 1
字段过滤
// 获取当前用户对象
$user = User::get(request()->session('user_id'));
// 只允许更新用户的nickname和address数据
$user->allowField(['nickname', 'address'])
->data(requst()->param(), true)
->save();
如果仅仅是希望去除数据表之外的字段,可以使用
// 只允许更新数据表字段数据
$user->allowField(true)
->data(requst()->param(), true)
->save();
//在模型中设置后,不必每次都调用allowField方法
class User extends Model{
protected $field = ['name', 'nickname', 'email', 'address'];
}
只读字段
//在更新的时候自动忽略
class User extends Model{
protected $readonly = ['name','email'];
}