`
web001
  • 浏览: 99381 次
  • 性别: Icon_minigender_1
  • 来自: 天津
社区版块
存档分类
最新评论

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

    博客分类:
  • PHP
阅读更多

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

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

 

 

2
4
分享到:
评论

相关推荐

    Python 进阶(三):Python使用ORM框架SQLAlchemy操作Oracle数据库

    本文主要介绍Python使用ORM框架SQLAlchemy操作Oracle数据库。 1. 安装Oracle Instant Client 2. 安装依赖库 使用以下命令来安装SQLAlchemy和cx_Oracle库: pip install SQLAlchemy pip install cx_Oracle 3.创建...

    dos.orm 实体生成器

    "dos.orm 实体生成器"是一个专门针对dos.orm框架的实体类自动生成工具,它极大地提高了开发效率,尤其是在处理大量数据库操作时。这个工具能够从数据库中的表结构自动创建与之对应的实体类,从而减少了手动编写这些...

    高性能 PHP 渐进式框架queryphp-master.zip

    QueryPHP 可能包含一个命令行接口(CLI),通过 artisan 类似的命令行工具,开发者可以执行自动化任务,如迁移数据库、生成模型等。 9. **性能优化**: 高性能是 QueryPHP 的一大特点,框架可能包含了一些优化措施...

    《Java Web开发教程——入门与提高篇(JSP+Servlet)》附赠电子资料——框架基础及实例

    文档中提到包含三个具体的案例,虽然没有给出详细的内容,但我们可以推测这些案例可能是为了展示如何在实际项目中应用上述技术框架。例如,可能有一个案例展示了如何使用Struts2和Hibernate构建一个完整的在线商店...

    ORMGenerator:极简的ORM代码生成器,对Object-c的类进行语法解析, 可根据Object-c的类定义,自动生成ORM框架需要的函数。理论上可适配任意ObjC的ORM框架 !!!

    极简的ORM代码生成器,对Object-c的类进行语法解析, 可根据Object-c的类定义,自动生成ORM框架需要的函数。理论上可适配任意ObjC的ORM框架 !!! 在model对象里标记成员 ORMDataBase(x) 标记数据库名字 ORMTable(x) ...

    Android轻量级sqlite orm框架.rar

    - Sugar ORM:简单易用,无需编写SQL,只需定义实体类并添加注解即可实现ORM映射。 - ActiveAndroid:提供了Model、Table和Column注解,支持数据库初始化和自动迁移。 - OrmLite for Android:强大的ORM库,支持...

    sqlite3的ORM框架

    SQLite3的ORM(Object-Relational Mapping)框架是一种在C++编程中将数据库关系模型与对象模型进行对应的技术。ORM框架使得开发者可以使用面向对象的方式来操作数据库,避免了直接编写SQL语句,提高了开发效率和代码...

    基于ORM模型的物资管理系统的设计和实现

    《基于ORM模型的物资管理系统的设计和实现》 在信息技术飞速发展的今天,企业对物资管理的需求...通过精心设计的对象模型和选择合适的ORM框架,我们可以构建出一个高效、易用的物资管理系统,满足企业的物资管理需求。

    ((51-58课)根据路飞学城的老师讲解进行总结整理)ORM生成关联表模型)

    三、ORM 生成关联表模型的优点 1. 提高开发效率:使用 ORM 工具生成关联表模型可以提高开发效率,因为它可以自动生成关联表模型,减少手动编写 SQL 语句的工作量。 2. 提高数据一致性:ORM 生成关联表模型可以确保...

    .NET ORM框架

    .NET ORM框架,全称为Object-Relational Mapping(对象关系映射)框架,是.NET开发者...在zc_orm框架这个压缩包中,可能包含了关于这些ORM框架的示例代码、教程或其他相关资源,可以帮助深入理解和学习.NET ORM的使用。

    QT-ORM代码自动生成器

    QT-ORM代码自动生成器是一种高效工具,专为使用QT框架进行对象关系映射(ORM)开发的程序员设计。ORM允许开发者用面向对象的方式处理数据库操作,减少了与SQL语句直接交互的工作量,提升了开发效率。这个工具的核心...

    mybatis ORM 自动生成工具

    MyBatis ORM(Object-Relational Mapping)框架是一款流行的Java持久层框架,它极大地简化了数据库操作,使得开发者可以专注于SQL语句的编写,而无需处理底层的数据连接和结果集映射。本项目提供了一个自动化的工具...

    Dos.ORM代码生成器

    Dos.ORM代码生成器是一款专为开发者设计的实用工具,主要功能是自动生成实体类代码,从而极大地提高开发效率,减少手动编写重复代码的工作量。它基于Dos.ORM框架,这是一个轻量级的ORM(对象关系映射)库,允许...

    C#代码生成器源码-基于自定义ORM框架

    本文将详细探讨一款基于C#的代码生成器,其核心是利用自定义的ORM(对象关系映射)框架,与SQLServer数据库紧密结合,用于生成常规的三层架构代码和配置文件。通过深入理解这一工具,开发者可以更好地理解和应用这一...

    主流ORM框架技术应用

    ### 主流ORM框架技术应用——Hibernat与MyBatis详解 #### 一、MVC设计模式概述 在深入探讨ORM框架之前,我们先来了解一下软件工程中的一个重要设计模式——MVC(Model-View-Controller),它对于理解后续ORM框架的...

    php中的orm

    这篇博客“php中的orm”很可能是探讨PHP中的一些主流ORM框架及其使用方法。 PHP的ORM框架如Doctrine、Laravel的Eloquent、Phalcon的Phalcon ORM等,它们的核心思想是将数据库表映射为类,表中的记录映射为类的实例...

    Moon.Orm下载

    3. **自动映射**:Moon.Orm支持实体类和数据库表之间的自动映射,开发者只需要定义好实体类,框架就能自动生成对应的数据库操作。 4. **事务处理**:框架内置了事务管理机制,允许开发者在需要时开启和提交事务,...

    简单高效的ORM框架

    2. **代码生成**:为了减少手动编写数据库访问代码的工作量,ORM框架可能包含代码生成工具,自动生成实体类和数据库操作的仓储接口及实现,使得开发更高效。 3. **查询构建器**:框架可能提供一种直观的查询方式,...

    C# ORM程序及实体生成工具

    描述中的“实体生成工具”是ORM框架的一部分,它可以帮助开发者自动生成与数据库表对应的C#实体类。对于MySQL和SQLite数据库,该工具提供了特定的支持,意味着它可以解析这些数据库的表结构,并根据表的字段信息生成...

    Python-动态创建一个模型的多个tablename并通过DjangoORM操作

    在Python的Web开发中,Django是一个非常流行的框架,它提供了强大的ORM(对象关系映射)功能,使得开发者可以方便地操作数据库而无需编写SQL语句。本篇将深入探讨如何在Django中动态创建多个模型的表名,并利用ORM...

Global site tag (gtag.js) - Google Analytics