ThinkPHP中实例化对象M()和D()的界别,select和find的区分

例如 $Demo = new Model();

1.ThinkPHP中实例化对象M()和D()的区分

例如:$user = new UserModel();

在实例化的经过中,常常选用D方法和M方法,那四个点子的区分在于M方法实例化模型不须要用户为各样数据表定义模型类,如若D方法未有找到定义的模型类,则会活动调用M方法。
通俗一点说:
M实例化参数是数据库的表名。
D实例化的是您谐和在Model文件夹上面创建的模子文件

等价于$user = D(‘user’);

只要用第三种就从来不了·····

咱俩得以用下边两种格局去创设三个数据表的照耀对象
第一种:$Test = D(‘Test’)
第二种:$Test = new Model(‘Test’)
虽说那二种都可以对数码举办select,insert,delete,udpate操作,在
多少印证上有极大的两样,用第一种格局实例一个模型就能够有数量检查职能,若是title 未有填写的话就能够提示 “请输入标题”
(这些是tp提供的二个自动验证成效,当然也亟需在相应的model中定义好注明条件);

只要实例化的是叁个航空模型型

D和M的区分首要在于:
M方法不要求创制模型类公事,M方法不会读取模型类,所以暗许意况下活动验证是没用的,不过能够透过动态赋值的诀窍贯彻
而D方法必须有创建模型类。

还应该有1个界别正是当用了$trueTableName后,必须用$test=d(‘test’),表示查询的是test表,

下边列举常见的假名方法:

A神速实例化Action类库
B实践行为类
C配置参数存取方法
D快捷实例化Model类库
F神速简单文本数据存取方法
L 语言参数存取方法
M神速高品质实例化模型
中华V火速远程调用Action类方法
S连忙缓存存取方法
U U奔驰G级L动态变化和重定向方法
W 急忙Widget输出方法
 
D函数实例化的是您眼下项目标Lib/Model下面包车型客车模块。
假诺该模块不存在的话,直接回到实例化Model的靶子(意义就与M()函数一样)。
而M只重回,实例化Model的靶子。它的$name参数作为数据库的表名来管理对数据库的操作。

2.thinkphp的select和find的区别

thinkphp是相比好的php开荒框架,能相比较飞速的开垦MVC架构的保管种类,大家必要用到 select()和find()方法,三个法子都能回到数据集数组,但有啥分化啊?先看一下自身的代码相比:

$tech=M('techlevel','HR_CS_','DB_CONFIG2');   $Data=$tech->where('id=1')->find();   dump($Data);   $Data=$tech->where('id=1')->select();   dump($Data);

结果如下:

array(6) {     ["ID"] => int(1)     ["TechLevel"] => string(2) "10"    ["Remark"] => string(4) "??"    ["CreateDate"] => string(19) "2013-03-14 15:14:38"    ["CreateBy"] => string(5) "admin"    ["ROW_NUMBER"] => string(1) "1"  }         array(1) {     [0] => array(6) {       ["ID"] => int(1)       ["TechLevel"] => string(2) "10"      ["Remark"] => string(4) "??"      ["CreateDate"] => string(19) "2013-03-14 15:14:38"      ["CreateBy"] => string(5) "admin"      ["ROW_NUMBER"] => string(1) "1"    }   }

 

从地点的代码能够看出,find()重返一个一维数组,select()再次来到二个二维数组,所以在取值时有所差别,

一维数组取值用 $data[“TechLevel”],

二维数组取值用 $data[0][“TechLevel”],

两岸还应该有三个重点的不一致之处:读取数据的操作实际和数据集的左近,select可用的享有连贯操作方法也都足以用来find方法,差距在于find方法最七只会回到一条记下,由此limit方法对于find查询操作是没用的。由于一同来没精通这么些用法,调节和测试一天也取不值,末了有dump方法才来看多个艺术的两样所在!


假定用的是$test=m(‘test’),那么都表示查询的多寡边是think_test。

thinkphp2.0本子测试有如此上边的主题素材,D正是实例化一个基于Model文件的Model。M则是通过直接实例化Model方法(ThinkPHP基类)来动态的实例化一个Model对象,尽管这几个相应的Model文件不设有。

那么它相当于于 $德姆o = M();

发表评论

电子邮件地址不会被公开。 必填项已用*标注

网站地图xml地图