怎么生成模型数据库,又怎么调用
现在我在数据库中添加了一个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>";