设为首页 收藏本站
查看: 1971|回复: 0

[经验分享] PHP框架queryphp教程:入门三 ORM模型生成

[复制链接]

尚未签到

发表于 2017-4-6 09:03:24 | 显示全部楼层 |阅读模式
怎么生成模型数据库,又怎么调用 
现在我在数据库中添加了一个info表怎么办假设在数据库中添加一个info表字段也设置好了那么我们来生成info数据库模型 。
我们在程序中写一句。
$supply=M("info");
就可以自动生成了info数据库模型了。
可以在

  • framework/model目录下面看到多了两个文件
  • infoModel.class.php infoBase.class.php
  • infoBase.class.php 是数据库表的基本信息,这个不用理
  • infoModel.class.php 是模型文件可以在这里添加其实方法 比如->setpassword($pwd);
 
PHP code 在framework/model目录里面。
infoModel.class.php
<?php 
class infoModel extends infoBase{ 
  var $mapper=array();
 var $maps;
 var $maparray=array();
 function setPassword($pwd) { 
     $this->data['password']=md5($pwd);
     return $this; 
  }

?> 
基类代码,主要是存放信息用。
infoBase.class.php
<?php 
 class infoBase extends model{ 
   var $tablename='www_info';
 var $PRI='myid';
 var $autoid=true;
 var $fields=array (
  'myid' => NULL,
  'myname' => '',
  'password' => '',
  'typeid' => '',
);
 var $types=array (
  'myid' => 'int(8)',
  'myname' => 'varchar(30)',
  'password' => 'varchar(32)',
  'typeid' => 'int(8)',
);
}
?> 
是不是很简单。
但是如果我的表是www_info表怎么办呢,这种就是加了前辍的表。
我的模型总不能有前辍吧。
看看document里面文档说明
//第一次使用请加上表名"www_channel"这样就会自动生成channel模型了,
//生成在model目录下面一个是channelBase.class.php和channelModel.class.php结尾的两个文件
//$channel=M("channel","www_channel");
//如果已生成过就不用表名了,只有第一次用或数据库更新了需要刷新才使用表名,切记
//使用一次后如果正确的那么生成了两个文件,于是赶紧把$channel=M("channel","www_channel");改为
//$channel=M("channel"); 这样就可以了不会再去生成那个Base.class.php文件
//如果我把数据库表改了一下添加或删除字段
//$channel=M("channel","www_channel");再加上表名再去刷新一下那个Base.class.php文件
//然后再改回来$channel=M("channel");
//正式发布时候我们model目录下已有所有数据库表模型文件了所以我们不会再使用$channel=M("channel","www_channel");加表名了
//有点哆嗦,意思是model下面有文件了就不要加表名了
 
那么我们使用$info=M("info","www_info");就可以生成了
framework/model目录下面 infoModel.class.php infoBase.class.php
删除 把访问一次
http://localhost/queryphp/ormtest.php
是不是又生成了两个文件跟刚才一样
infoBase.class.php
var $tablename='www_info'; //这个才是表名
下面说说怎么就用操作数据据库了
$supply->where($supply->pkidkey().">12")->delete();
表示删除主键大于12的
现在我们做下查询
$supply->whereuseridANDbookid(12,9)->fetch();
表示要取得userid=12 and bookid=9记录
$supply->whereuseridORbookid(12,9)->fetch();
表示要取得userid=12 OR bookid=9记录
$supply->whereuseridIN(12,9)->fetch();
表示要取得userid IN (12,9)记录
$supply->up(0);
$supply->address="北京海淀区";
$supply->update("address");
修改$supply->record[0]中记录
我们只更新address字段
我们想复制一行
那么还是操作刚才那个 $supply->up(0);
因为数据还留在$supply->data中
我们复制一个
$supply->copyRecord()->save();
这样就可以新插入数据了
copyRecord()作用是把data中数据主键删除,没有主键保存那么会以插放方式 
ORM操作例子:
echo "bye<pre>";
$supply=M("supply");
//$supply->get(3,4);
//print_r($supply->record);
//echo $supply->title;
//$supply->up();
//print_r($supply->getData());
//$supply->up();
//print_r($supply->getData());


//$supply->getDataBaseName();


//echo "===".$supply->Books->Supply->title;
//$supply=M("supply");
//$supply->get(3,4);
//$supply->up();//edit 3
//M("booktype")->classname="星际解霸2";


// $supply->copyRecord()->save(M("booktype"));


//$supply->Books=array("classname"=>"星际解霸5");
//print_r($supply->save());


//$supply->where($supply->PRI.">12")->delete();
//$supply->save();
//$books=M("booktype");
//echo "aaa";
//$books->get(246)->up(); //取一个值
//$books->classname="开发游戏新行"; //更新字段
//$supply->update($books); //关联保存
//$books->where($books->PRI.">3")->delete();
//M("booktype")->where($books->PRI.">12")->delete();
//$supply->Books->setclassname("星际争霸9")->save();
// print_r($supply->data);
//$supply->address="北京海淀区";
//$supply->update("address");
//$supply->update(array("mobile"=>126666,"address"=>"清上河"));
//$supply->update("mobile,address",array(13800138000,"上地站"));
/*
* update为指定字段更新,不像save什么都更新
* $supply->update('fields,fields');
* $supply->update(array('fields'=>"aaabbb","fields2"=>8888));
* $supply->update(array('fields'=>"aaabbb","fields2"=>8888),true); //true表示更新到$supply->data
* $supply->update($Books); //关联更新 $Books是M对像,表示更新到$supply->data
* $books 为类对象,record将会改为对像的。
* $supply->update($books,true); 
* $supply->update('fields,fields',array("aa","bbb"));
*/


//$supply->Books(array('classname'=>"星星争霸78"))->save();
//print_r($supply->Books->record);
//print_r($supply->Books->record);
//$supply->Books=array("classname"=>"星际解霸21");
//$supply->Books=array("classname"=>"星际解霸22");
//$supply->Books=array("0"=>array("classname"=>"星际解霸88"),2=>array("classname"=>"星际解霸98"));
//print_r($supply->data);
//$supply->copyRecord();
//print_R($supply);
//$supply->copyRecord()->save();
//print_r($books->record);
//print_r($supply);
//print_r(M("booktype")->record);
//$sub="useridANDlanguageORlangLIKEcnpri";
//$sub="useridAND";
//$sub="asdfdgdasdLIKE";
echo "</pre>";
 
 

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-360823-1-1.html 上篇帖子: PHP.INI配置:Session配置详细说明教程 下篇帖子: PHP:在对象上动态添加一个新的方法
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表