PHP学习笔记——在phalapi框架内的orm数据库操作

本文详细介绍了在PhalApi框架中如何进行数据库操作,包括获取NotORM实例的两种方式:全局和局部获取,以及如何利用这些实例执行基本的数据库操作。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

今天将自己的聚合支付接口集成到了phal框架内,由于在phalapi框架内如何返回视图不知道,因此需要将原本的wap站点的sdk包转化为api资源。具体过程稍晚点记录,现在将phalapi框架内的数据库操作简单记录一下。

如何获取orm实例

在PhalApi中,全部数据库操作都要经过NotORM实例来进行,在PhalApi中获取NotORM实例,有两种方式:全局获取方式、局部获取方式。

全局获取

在任何地方,使用DI容器中的全局notorm服务:\PhalApi\DI()->notorm

第一种全局获取的方式,可以用于任何地方,这是因为我们已经在初始化文件中注册了\PhalApi\DI()->notorm这一服务。

			$bill = array(
                'trade_status' => $data['trade_status']
            );
            $orm = \PhalApi\DI()->notorm->bill;//bill为数据表名,去除了前缀tbl_
            return $id = $orm->insert($bill);//这样即可在tbl_bill表中插入一条trade_status字段的记录

局部获取

在继承PhalApi\Model\NotORMModel的子类中使用:$this->getORM()

第二种局部获取的方式,仅限用于继承PhalApi\Model\NotORMModel的子类中。首先需要实现相应的Model子类,通常一个表对应一个Model子类。例如为user表创建相应的Model类。

class User extends NotORM {
    public function doSth() {
        // 局部获取
        $orm = $this->getORM(); 
    }
}

事实上,只要获取了orm实例,那么涉及到数据库的基本操作便没有其他太大的问题了。而关于框架内model类与数据表的对应关系大家可以查阅官网http://docs.phalapi.net文档,这里不再赘述,orm的特性大家也可以到orm官网查看。

自主封装的PHP ORM框架,面向对象的PDO数据库操作,API框架,支持Get/Post/Put/Delete多种请求方式。 代码示例: <?php use Models\User; require '../application.php'; require '../loader-api.php'; //适合查询,如:获取用户列或者单个用户信息 execute_request(HttpRequestMethod::Get, function() { $action = request_action(); //判断是否存在 if ($action == 1) { list($type, $value) = filter_request(array( request_int('type', 1, 2, 3), //1.用户名 2.邮箱 3.手机号 request_string('value'))); $type_field_map = array( 1 => User::$field_username, 2 => User::$field_email, 3 => User::$field_phone ); if ($type == 2 && !is_email($value) || $type == 3 && !is_mobilephone($value)) { die_error(USER_ERROR, $type_field_map[$type]['name'] . '格式无效'); } $user = new User(); $user->set_where_and($type_field_map[$type], SqlOperator::Equals, $value); $result = $user->exists(create_pdo()); echo_result($result ? 1 : 0); //存在返回1,不存在返回0 } //查询单条信息 if ($action == 2) { list($userid) = filter_request(array( request_userid())); //查询单条数据 $user = new User($userid); //set_query_fields可以指定查询字段,下面两种写法均可 //$user->set_query_fields('userid, username, email'); //$user->set_query_fields(array(User::$field_userid, User::$field_username, User::$field_email)); //还可设置where条件进行查询 //$user->set_where_and(User::$field_status, SqlOperator::Equals, 3); //$user->set_where_and(User::$field_truename, SqlOperator::IsNullOrEmpty); //$user->set_where_and(User::$field_age, SqlOperator::In, array(27, 29)); //$user->set_where_and(User::$field_regtime, SqlOperator::LessThan, '-6 month'); //创建数据库连接 $db = create_pdo(); $result = $user->load($db, $user); //也可以用Model类的静态方法 //$result = Model::load_model($db, $user, $user); if (!$result[0]) die_error(PDO_ERROR_CODE, '获取用户信息时数据库错误'); if (!$user) di
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值