Skip to content
Think ORM——the PHP Database&ORM Framework
Branch: master
Clone or download
Latest commit ef0e07b Feb 16, 2019
Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
src 修正Mongo类 Jan 29, 2019
.gitignore 首次提交 Oct 27, 2017
LICENSE
README.md
composer.json

README.md

think-orm

基于PHP5.6+ 的ORM实现,主要特性:

  • 基于ThinkPHP5.1的ORM独立封装
  • 支持Mysql、Pgsql、Sqlite、SqlServer、Oracle和Mongodb
  • 支持Db类和查询构造器
  • 支持事务
  • 支持模型和关联

适用于不使用ThinkPHP框架的开发者。

安装

composer require topthink/think-orm

Db类用法:

use think\Db;
// 数据库配置信息设置(全局有效)
Db::setConfig(['数据库配置参数(数组)']);
// 进行CURD操作
Db::table('user')
	->data(['name'=>'thinkphp','email'=>'thinkphp@qq.com'])
	->insert();	
Db::table('user')->find();
Db::table('user')
	->where('id','>',10)
	->order('id','desc')
	->limit(10)
	->select();
Db::table('user')
	->where('id',10)
	->update(['name'=>'test']);	
Db::table('user')
	->where('id',10)
	->delete();

Db类增加的(静态)方法包括:

  • setConfig 设置全局配置信息
  • getConfig 获取数据库配置信息
  • setQuery 设置数据库Query类名称
  • setCacheHandler 设置缓存对象Handler(必须支持get、set及rm方法)
  • getSqlLog 用于获取当前请求的SQL日志信息(包含连接信息)

其它操作参考TP5.1的完全开发手册数据库章节

定义模型:

namespace app\index\model;
use think\Model;
class User extends Model
{
}

代码调用:

use app\index\model\User;

$user = User::get(1);
$user->name = 'thinkphp';
$user->save();

Db类和模型对比使用

创建Create

  • Db用法

    Db::table('user')
        ->insert([
            'name'  => 'thinkphp',
            'email' => 'thinkphp@qq.com',
        ]);
  • 模型用法

    $user        = new User;
    $user->name  = 'thinkphp';
    $user->email = 'thinkphp@qq.com';
    $user->save();
  • 或者批量设置

    $user = new User;
    $user->save([
        'name'  => 'thinkphp',
        'email' => 'thinkphp@qq.com',
    ]);

读取Read

  • Db用法

    $user = Db::table('user')
        ->where('id', 1)
        ->find();
    //  或者
    $user = Db::table('user')
        ->find(1);
    echo $user['id'];
    echo $user['name'];
  • 模型用法

    $user = User::get(1);
    echo $user->id;
    echo $user->name;
  • 模型实现读取多个记录

    // 查询用户数据集
    $users = User::where('id', '>', 1)
        ->limit(5)
        ->select();
    
    // 遍历读取用户数据
    foreach ($users as $user) {
        echo $user->id;
        echo $user->name;
    }

更新Update

  • Db用法

    Db::table('user')
        ->where('id', 1)
        ->update([
            'name'  => 'topthink',
            'email' => 'topthink@qq.com',
        ]);
  • 模型用法

    $user        = User::get(1);
    $user->name  = 'topthink';
    $user->email = 'topthink@qq.com';
    $user->save();
  • 或者使用

    $user = User::get(1);
    $user->save([
        'name'  => 'topthink',
        'email' => 'topthink@qq.com',
    ]);
  • 静态调用

    User::update([
        'name'  => 'topthink',
        'email' => 'topthink@qq.com',
    ], ['id' => 1]);

删除Delete

  • Db用法

    Db::table('user')->delete(1);
  • 模型用法

    $user = User::get(1);
    $user->delete();
  • 或者静态实现

    User::destroy(1);
  • 静态调用

    User::update([
        'name'  => 'topthink',
        'email' => 'topthink@qq.com',
    ], ['id' => 1]);
  • destroy方法支持删除指定主键或者查询条件的数据

    // 根据主键删除多个数据
    User::destroy([1, 2, 3]);
    // 指定条件删除数据
    User::destroy([
        'status' => 0,
    ]);
    // 使用闭包条件
    User::destroy(function ($query) {
        $query->where('id', '>', 0)
            ->where('status', 0);
    });

更多模型用法可以参考5.1完全开发手册的模型章节

You can’t perform that action at this time.