PHP code example of qingbing / php-db-model

1. Go to this page and download the library: Download qingbing/php-db-model library. Choose the download type require.

2. Extract the ZIP file and open the index.php.

3. Add this code to the index.php.
    
        
<?php
require_once('vendor/autoload.php');

/* Start to develop here. Best regards https://php-download.com/ */

    

qingbing / php-db-model example snippets



class Stu extends DbModel
{
    /* @var int 开启缓存时缓存的时间(秒) */
    protected $cachingDuration = 0;

    /**
     * 显示定义数据表名称,和类名相同,可以不用显示定义,但是建议都定义下
     * @return string
     */
    public function tableName()
    {
        return "{{stu}}";
    }

    /**
     * 定义并返回模型属性的验证规则
     * @return array
     */
    public function rules()
    {
        return [
            ['class_id, name, sex, is_master', 'string'],
            ['id', 'safe'],
        ];
    }

    /**
     * 和模型关联关系
     * @return array
     */
    public function relations()
    {
        return [
            'stuClass' => [self::BELONGS_TO, '\TestClass\StuClass', 'class_id'],
            'course' => [self::HAS_MANY, '\TestClass\StuCourse', 'stu_id'],
            'statCourse' => [self::STAT, '\TestClass\StuCourse', 'stu_id'],
        ];
    }
}


class StuClass extends DbModel
{
    protected $cachingDuration = 0;

    /**
     * 显示定义数据表名称,和类名相同,可以不用显示定义,但是建议都定义下
     * @return string
     */
    public function tableName()
    {
        return "{{class}}";
    }

    /**
     * 定义并返回模型属性的验证规则
     * @return array
     */
    public function rules()
    {
        return [
            ['name', 'string'],
            ['name', self::UNIQUE], // 模型唯一性验证
            ['id', 'safe'],
        ];
    }

    /**
     * 和模型关联关系
     * @return array
     */
    public function relations()
    {
        return [
            'master' => [self::HAS_ONE, '\TestClass\Stu', 'class_id', 'condition' => '`is_master`=:is_master', 'params' => [':is_master' => 1]],
            'stu' => [self::HAS_MANY, '\TestClass\Stu', 'class_id'],
        ];
    }

    /**
     * 获取属性标签,该属性在必要时需要被实例类重写
     * @return array
     */
    public function attributeLabels()
    {
        return [
            'id' => '自增ID',
            'name' => '年级',
        ];
    }
}

class StuCourse extends DbModel
{
    /**
     * 显示定义数据表名称,和类名相同,可以不用显示定义,但是建议都定义下
     * @return string
     */
    public function tableName()
    {
        return "{{stu_course}}";
    }

    /**
     * 和模型关联关系
     * @return array
     */
    public function relations()
    {
        return [
            'course' => [self::BELONGS_TO, '\TestClass\Stu', 'stu_id'],
        ];
    }
}

        // 新增模型数据
        $model = new Stu();
        // 设置字段属性
        $model->setAttributes([
            'name' => 'insertName',
            'class_id' => '4',
            'sex' => '1',
        ]);
        // 获取字段数据
        var_dump($model->name);
        var_dump($model->getAttribute('name'));
        // 获取所有字段数据
        var_dump($model->getAttributes());

        // 新增模型数据
        $model = new Stu();

        // 设置模型数据
        $model->setAttributes([
            'name' => 'insertName',
            'class_id' => '4',
            'sex' => '1',
        ]);

        // 保存判断
        if ($model->save()) {
            var_dump('save success');
            var_dump($model);
        } else {
            var_dump($model->getErrors());
        }

        // 通过 Criteria 更新数据
        $criteria = new Criteria();
        $criteria->addWhere('`id`>=:minId', [
            ':minId' => 7
        ]);
        $num = Stu::model()->updateAll([
            'name' => 'updateAll',
        ], $criteria);
        var_dump($num);

        // 根据属性修改数据
        $num = Stu::model()->updateAllByAttributes([
            'name' => 'updateAllByAttributes',
        ], [
            'id' => 7
        ]);
        var_dump($num);

        // 根据主键更新记录
        $num = Stu::model()->updateByPk(8, [
            'name' => 'updateByPk',
        ]);
        var_dump($num);

        // 模型查询
        $model = Stu::model()->findByPk('9');
        $model->setAttributes([
            'name' => 'updateSave',
        ]);
        if ($model->save()) {
            var_dump('save success');
        } else {
            var_dump($model->getErrors());
        }

        // 通过 Criteria 删除数据
        $criteria = new Criteria();
        $criteria->addWhere('`id`>=:minId', [
            ':minId' => 13
        ]);
        $num = Stu::model()->deleteAll($criteria);
        var_dump($num);

        // 删除对应属性的记录
        $num = Stu::model()->deleteAllByAttributes([
            'id' => 12
        ]);
        var_dump($num);

        // 删除对应主键的记录
        $num = Stu::model()->deleteByPk(11);
        var_dump($num);

        // 通过模型删除记录
        $stu = Stu::model()->findByPk(10);
        if ($stu) {
            if ($stu->delete()) {
                var_dump('delete success');
            } else {
                var_dump('delete failure');
            }
        } else {
            var_dump('record has been deleted');
        }

        // 通过 criteria 查询单个数据模型
        $criteria = new Criteria();
        $stu = Stu::model()->find($criteria);
        var_dump($stu);

        // 通过 criteria 查询所有数据模型
        $criteria = new Criteria();
        $criteria->setLimit(3);
        $stus = Stu::model()->findAll($criteria);
        var_dump($stus);

        // 通过属性查询单个数据模型
        $stu = Stu::model()->findByAttributes([
            'class_id' => 3
        ]);
        var_dump($stu);

        // 通过属性查询多个数据模型
        $stu = Stu::model()->findAllByAttributes([
            'class_id' => 2
        ]);
        var_dump($stu);

        // 通过主键查询单个数据模型
        $stu = Stu::model()->findByPk(2);
        var_dump($stu);

        // 通过主键查询多个数据模型
        $stus = Stu::model()->findAllByPks([1, 2, 3]);
        var_dump($stus);

        // 通过 criteria 统计符合条件的数量
        $criteria = new Criteria();
        $criteria->addWhere('id>:id', [
            ':id' => 3,
        ]);
        $num = Stu::model()->count($criteria);
        var_dump($num);

        // 通过数组属性统计符合条件的数量
        $num = Stu::model()->countByAttributes([
            'class_id' => 2,
        ]);
        var_dump($num);

        // 查询是否有符合条件的记录
        $criteria = new Criteria();
        $criteria->addWhere('id>:id', [
            ':id' => 3,
        ]);
        $isExists = Stu::model()->exists($criteria);
        var_dump($isExists);

        // 查询是否有符合条件的记录
        $num = Stu::model()->existByAttributes([
            'class_id' => 2,
        ]);
        var_dump($num);

        // 查找数据并实例化成db模型
        $stu = Stu::model()->findByPk('4');
        var_dump($stu);
        // 获取数据模型信息
        $metaData = $stu->getMetaData();
        var_dump($metaData);

        // BELONGS_TO 使用示例
        $stuClass = $stu->stuClass;
        var_dump($stuClass);

        // STAT 使用示例
        $statCourse = $stu->statCourse;
        var_dump($statCourse);

        // HAS_MANY 使用示例
        $sourse = $stu->course;
        var_dump($sourse);

        //  HAS_ONE 使用示例
        $stuClass = StuClass::model()->findByPk(2);
        $master = $stuClass->master;
        var_dump($master);

        $model = new StuClass();

        $model->setAttributes([
            'name' => '二年级',
        ]);

        // 保存判断
        if ($model->save()) {
            var_dump('save success');
            var_dump($model);
        } else {
            var_dump($model->getErrors());
        }

// 通过 criteria 查询单个数据模型
$criteria = new Criteria();
$model = new Stu();
$rs = $model->pagination($criteria, true, 5, 1);
var_dump($rs);