PHP框架queryphp教程:入门三 ORM模型生成

justjavac 发布于 2012/12/11 15:12
阅读 628
收藏 1

怎么生成模型数据库,又怎么调用 

现在我在数据库中添加了一个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>";

加载中
返回顶部
顶部