模型定义
/*
* 搜索器
* @desc searchFieldNameAttr
* @access public
* @param $query 查询对象
* @param $value 搜索标识值
* @param $data 所有搜索数据(可选)
*
*/
public function searchNameAttr($query,$value,$data){
$query->where(['name'=>$value]);
}
public function searchCreateTimeAttr($query, $value, $data)
{
$query->whereBetweenTime('create_time', $value[0], $value[1]);
}
/*
* 修改器
* FieldName对应数据表字段field_name
* @desc setFieldNameAttr
* @access public
* @param $value 设置标识值
* @param $data 所有修改数据
*/
protected function setNameAttr($value,$data){
return md5($value);
}
/*
* 获取器
* FieldName对应数据表字段field_name
* @desc getFieldNameAttr
* @access public
* @param $value 设置标识值
* @param $data 所有修改数据
*/
protected function getIdAttr($value,$data){
$type = [0 => '普通', 1 => 'VIP', 2 => '黄金', 3 => '白金', 4 => '钻石'];
return $type[$value];
}
控制器调用:
#搜索器:
$query = ['name', 'create_time'];
$value = ['name'=> 'think','create_time'=>['2018-8-1','2018-8-5'], 'status'=>1 ];
User::withSearch($query,$value)->select();
User::withSearch(['name' => function($query,$value,$data){
$query->where('name','like', $value . '%');
}, 'create_time'=>function($query,$value,$data){
$query->whereBetweenTime('create_time', $value[0], $value[1]);
}],
['name'=> 'think','create_time'=>['2018-8-1','2018-8-5'], 'status'=>1 ])->select();
#修改器:(注意:insert、update无效,使用save)
$user = User::get(7);
$user->name = 'admin';#第一种写法
$user->data('name', md5('admin')); #第二种写法
$user->save();
#获取器:
$user = User::get(7);
echo $user->id;//获取器设置的值
echo $user->getData('id');//原始值
dump($user->getData());// 获取全部原始数据
//动态获取,支持DB模式
User::withAttr('name', function($value, $data) {
return strtolower($value);
})->select();
网友评论