第一种:继承Model类
namespace Home\Model
Class UserModel extends \Think\Model {
Protected $autoCheckFields = false
}
设置autoCheckFields属性为false后,就会关闭字段信息的自动检测,因为ThinkPHP采用的是惰性数据库连接,只要你不进行数据库查询 *** 作,是不会连接数据库的。
第二种:不继承Model类
namespace Home\Model
Class UserModel {
}
这种方式下面自定义模型类就是一个单纯的业务逻辑类,不能再使用模型的CURD *** 作方法,但是可以实例化其他的模型类进行相关 *** 作,也可以在需要的时候直接实例化Db类进行数据库 *** 作。
$db = M('table')//表名$where = array( //条件数组
'id' =>2,
)
$rs = $db->where($where)->select()//查询, 用find()只能查出一条数据,select()多条
$this->assign('datalist',$rs)//模板赋值
$this->display()//输出到模板
一般情况下是一个表对应一个model类,不用也是可以的。
至于你说的简化代码,给你举个例子:
比如说你有一个user表,里面有 id name pass time(登录时间),对其的 *** 作页面有注册,登录,修改密码等等
如果你要使用M来进行实例的话,不管是注册还是干啥,你每次都要对提交过来的信息是否合法进行一个验证,time时间每次都要使用time()函数来重新生成以下
但是如果你使用了model,使用D来实例化,这些信息的验证,和time()的完成都可以写到model中,就不用在上面说的那些页面当中一一进行 *** 作验证或者添加了。
class UserModel extends Model{
//使用下面的这些可以很方面对user表进行 *** 作,省去了多次对表进行 *** 作时候所书写的验证和完成之类的代码。
//自动验证
protected $_validate = array(
array('name','require','用户名不能为空'),
array('name','','用户名已存在',0,'unique',1),
array('user_pwd','require','新密码不能是空',0,'',2),//只更新时验证
)
//自动完成
protected $_auto = array (
array('addtime','time',1,'function'),
)
//上面的一些规则可以参考自动完成和自动验证的规则,需要调用函数的时候,在下面自己再添加自定义的函数
}
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)