PHPackages                             chichoyi/think-basemodel - PHPackages - PHPackages  [Skip to content](#main-content)[PHPackages](/)[Directory](/)[Categories](/categories)[Trending](/trending)[Leaderboard](/leaderboard)[Changelog](/changelog)[Analyze](/analyze)[Collections](/collections)[Log in](/login)[Sign up](/register)

1. [Directory](/)
2. /
3. [Framework](/categories/framework)
4. /
5. chichoyi/think-basemodel

ActiveLibrary[Framework](/categories/framework)

chichoyi/think-basemodel
========================

thinkphp( &gt;5.0 ) 框架模型中间件

1.9.1(7y ago)0382MITPHPPHP ~5.6|~7.0

Since May 4Pushed 7y agoCompare

[ Source](https://github.com/chichoyi/think-basemodel)[ Packagist](https://packagist.org/packages/chichoyi/think-basemodel)[ Docs](https://github.com/chichoyi/think-basemodel)[ RSS](/packages/chichoyi-think-basemodel/feed)WikiDiscussions master Synced today

READMEChangelogDependenciesVersions (11)Used By (0)

前言
==

[](#前言)

think-basemodel是基于 &gt;thinkphp5.0 ORM。封装成的一个包（trait）。框架的orm是链式调用，此Basemodel内部也是链式调用orm。封装Basemodel包的目的是：

- 方便做热点数据缓存；
- 统一的方法调用；
- 自动处理软删除；
- 等等...
- 如果你觉得这个封装包会特别影响你项目php解析文件的效率，请绕道。

安装指引
====

[](#安装指引)

```
composer require chichoyi/think-basemodel

```

安装配置文件
------

[](#安装配置文件)

```
复制文件 /vendor/chichoyi/think-basemodel/src/config/basemodel.php
到框架指定文件夹下 /application/extra/

```

配置介绍
====

[](#配置介绍)

```
//返回格式是否处理成数组
'ret_array_format' => true,

//是否启用软删除
'soft_delete' => true,

```

使用前注意
=====

[](#使用前注意)

此封装包有删除功能，“墙裂”建议每张表都加上软删除的标志字段，如下

```
soft_delete  tinyint  unsigned  default 1  comment "0-删除 1-正常 2-暂停"

```

使用示例
====

[](#使用示例)

```
namespace app\index\model;

use think\Model;
use Commaai\traits\Basemodel;

class User extends Model
{
    use BaseModel;

    protected $table = 'user';

    //开启自动维护时间戳，TP框架update方法没有自动维护更新时间，Basemodel的包有自动维护
    protected $autoWriteTimestamp = true;

    //如果表的主键不是id，可以指定主键id
    protected $primaryId = 'tp_user_id';

    //如果表的软删除字段不是soft_delete,支持自定义，但是一定要用int类型(默认值需要指定为1) 0-删除 1-正常 2-暂停
    protected $softDelete = 'status';

}

//在controller里面的使用方法参见方法介绍

```

方法介绍
====

[](#方法介绍)

新增
--

[](#新增)

### add(array $data)

[](#addarray-data)

```
- 描述：支持单个或批量添加，成功返回主键id或添加数量

- 使用示例：

namespace app\index\controller;

use think\controller;

class User extends controller
{
    //单个添加 返回主键id
    $addUser = model('index/User')->add(['username' => 'thinkphp', 'age' => 18]);

    //批量添加 返回添加数量
    $addUsers = model('index/User')->add([
        ['username' => 'thinkphp1', 'age' => 18],
        ['username' => 'thinkphp2', 'age' => 19]
    ]);
}

```

删除(只支持软删除)
----------

[](#删除只支持软删除)

### delById($id)

[](#delbyidid)

```
- 描述：通过主键id删除

- 使用示例：

namespace app\index\controller;

use think\controller;

class User extends controller
{
    //传id删除
    $del = model('index/User')->delById(12);

}

```

### delByField($where, array $whereFunction = \[\])

[](#delbyfieldwhere-array-wherefunction--)

```
- 描述：通过条件删除

- 参数说明: $whereFunction = []
    - 默认为空,可传高级查询
    - 下同参数不再赘述

- 使用示例：

namespace app\index\controller;

use think\controller;

class User extends controller
{
    //通过条件删除
    $del = model('index/User')->delByField(['name' => 'Mike']);

    //使用示例 删除18岁到25岁区间的用户
    $del = model('index/User')->delByField([], [
        'whereBetween' => ['age', [18, 25] ]
    ]);

}

```

修改
--

[](#修改)

### putById($id, $data, $softDelete = true, array $whereFunction = \[\])

[](#putbyidid-data-softdelete--true-array-wherefunction--)

```
- 描述：通过主键id修改

- 参数说明:

    - $softDelete = true

        - 与配置文件basemodel配置soft_delete的值共同起作用
        - 配置文件basemodel的soft_delte为true,方法里的$soft_delete参数表示是否对软删除的值起作用
        - 下同参数不再赘述

- 使用示例：

namespace app\index\controller;

use think\controller;

class User extends controller
{
    //传id修改
    $putById = model('index/User')->putById(12, ['name' => 'Jams']);

}

```

### put($where, $data, $softDelete = true, array $whereFunction = \[\])

[](#putwhere-data-softdelete--true-array-wherefunction--)

```
- 描述：通过条件修改

- 使用示例：

namespace app\index\controller;

use think\controller;

class User extends controller
{
    //通过条件修改
    $put = model('index/User')->put(['name' => 'Mike'], ['age' => 22]);

}

```

查询
--

[](#查询)

### getByField($where, $field = '\*', $orderBy = \[\], $softDelete = true, array $whereFunction = \[\])

[](#getbyfieldwhere-field---orderby---softdelete--true-array-wherefunction--)

```
- 描述：通过条件查询

- 参数说明: $orderBy = []
    - 可传数组, 可传字符串, 用法同[TP文档](https://www.kancloud.cn/manual/thinkphp5/118078)
    - 下同参数不再赘述

- 使用示例：

namespace app\index\controller;

use think\controller;

class User extends controller
{

    $list = model('index/User')->getByField(['age' => 18]);

}

```

### getOneByField($where, $field = '\*', $softDelete = true, array $whereFunction = \[\])

[](#getonebyfieldwhere-field---softdelete--true-array-wherefunction--)

```
- 描述：通过条件查询

- 使用示例：

namespace app\index\controller;

use think\controller;

class User extends controller
{

    $getOne = model('index/User')->getOneByField(['name' => 'Mike'], ['age' => 22]);

}

```

### getById($id, $field = '\*', $softDelete = true)

[](#getbyidid-field---softdelete--true)

```
- 描述：通过id查询

- 使用示例：

namespace app\index\controller;

use think\controller;

class User extends controller
{

    $getOne = model('index/User')->getById(12);

}

```

### getListWithPage($page, $per\_num, $where = \[\], $field = '\*', $orderBy = \[\], $softDelete = true, $whereFunction = \[\])

[](#getlistwithpagepage-per_num-where---field---orderby---softdelete--true-wherefunction--)

```
- 描述：分页列表

- 使用示例：

namespace app\index\controller;

use think\controller;

class User extends controller
{

    //获取user_id在1-5区间的分页列表,并且按照主键倒序排列
    $getList = model('index/User')->getListWithPage(1, 10, [], 'name,age', 'coupon_tyep_id desc' true, ['whereBetween' => ['id', [1,5]]]);

}

```

### getListJoinTable($joinTable, $where = \[\], $field = '\*', $orderBy = \[\], $softDelete = true, $whereFunction = \[\])

[](#getlistjointablejointable-where---field---orderby---softdelete--true-wherefunction--)

```
- 描述：关联模型的列表

- 参数说明
    - $joinTable 模型关联，可传字符串，数组
    - 下同参数不再赘述

- 使用示例：

```

请先在对应模型定义关联关系

```
namespace app\index\model;

use think\Model;

class User extends Model
{

    //一个人可以有多张信用卡
    public function cards(){
        return $this->hasMany('Cards');
    }

}

```

控制器调用

```
namespace app\index\controller;

use think\controller;

class User extends controller
{

    //列出id在1-10区间用户名下的信用卡
    $getList = model('index/User')->getListJoinTable('cards',['id' => ['
