ThinkPHP 模型高级

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'];
}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值