easyswoole框架之orm操作数据库操作

第一步安装orm封装依赖

Easyswoole提供的一个全新协程安全的ORM封装
我们想使用它提供的api,那么的先按照它的要求来:

安装 依赖关系

swoole >= 4.4.8
Easyswoole >=3.3.2
mysqli > 2.x

安装 mysqli

composer require easyswoole/mysqli

安装orm

composer require easyswoole/orm

第二步:配置数据库信息配置

我们找到框架目录中的EasySwooleEvent.php文件中进行配置

<?php
namespace EasySwoole\EasySwoole;
use App\Exception\ExceptionHandler;
use EasySwoole\Component\Di;
use EasySwoole\EasySwoole\Swoole\EventRegister;
use EasySwoole\EasySwoole\AbstractInterface\Event;
use EasySwoole\Http\Request;
use EasySwoole\Http\Response;
use EasySwoole\ORM\DbManager;
use EasySwoole\ORM\Db\Connection;
use EasySwoole\ORM\Db\Config;
use EasySwoole\EasySwoole\Config as GlobalConfig;
class EasySwooleEvent implements Event
{
    public static function initialize()
    {
        // TODO: Implement initialize() method.
        date_default_timezone_set('Asia/Shanghai');
        Di::getInstance()->set(SysConst::HTTP_EXCEPTION_HANDLER,[ExceptionHandler::class,'handle']);

    }

    public static function mainServerCreate(EventRegister $register)
    {
        // TODO: Implement mainServerCreate() method.
        $config = new Config(GlobalConfig::getInstance()->getConf("MYSQL"));
        DbManager::getInstance()->addConnection(new Connection($config));
        $register->add($register::onWorkerStart,function (){
            //链接预热
            DbManager::getInstance()->getConnection()->getClientPool()->keepMin();
        });
    }

    public static function onRequest(Request $request, Response $response): bool
    {
        // TODO: Implement onRequest() method.
        return true;
    }

    public static function afterRequest(Request $request, Response $response): void
    {
        // TODO: Implement afterAction() method.
    }
}

在dev.php文件中配置数据库信息,添加一个MYSQL的数据配置信息

<?php
return [
    'SERVER_NAME' => "EasySwoole",
    'MAIN_SERVER' => [
        'LISTEN_ADDRESS' => '0.0.0.0',
        'PORT' => 9501,
        'SERVER_TYPE' => EASYSWOOLE_WEB_SERVER, //可选为 EASYSWOOLE_SERVER  EASYSWOOLE_WEB_SERVER EASYSWOOLE_WEB_SOCKET_SERVER,EASYSWOOLE_REDIS_SERVER
        'SOCK_TYPE' => SWOOLE_TCP,
        'RUN_MODEL' => SWOOLE_PROCESS,
        'SETTING' => [
            'worker_num' => 8,
            'reload_async' => true,
            'max_wait_time'=>3
        ],
        'TASK'=>[
            'workerNum'=>4,
            'maxRunningNum'=>128,
            'timeout'=>15
        ]
    ],
    'TEMP_DIR' => null,
    'LOG_DIR' => null,
    "MYSQL"=>[
        'host'          => '192.168.80.1',
        'port'          => 3306,
        'user'          => 'root',
        'password'      => 'root',
        'database'      => 'easyswoole',
        'timeout'       => 5,
        'charset'       => 'utf8',

    ]
];

定义模型类

<?php
namespace  App\Model;
use EasySwoole\ORM\AbstractModel;
use EasySwoole\ORM\Utility\Schema\Table;

/**
 * Created by PhpStorm.
 * User: zq2020
 * Date: 20-2-26
 * Time: 下午11:45
 */
class User extends AbstractModel
{
    /**
     * 表的获取
     * 此处需要返回一个 EasySwoole\ORM\Utility\Schema\Table
     * @return Table
     */
    protected  $tableName="easy_user";
    protected $connectionName="default";
    protected $autoTimeStamp = true;
    protected $createTime = 'create_time';
    protected $updateTime = 'update_time';

    public function schemaInfo(bool $isCache=true):Table{
        $table = new Table($this->tableName);
        $table->colInt('id')->setIsPrimaryKey(true);
        $table->colChar('name', 40);
        $table->colChar('phone',20);
        $table->colDate("create_time");
        $table->colDate("update_time");
        return $table;
    }
}

根据ID查询数据

<?php
namespace App\HttpController\Learn;
use App\Model\User;
use EasySwoole\Http\AbstractInterface\Controller;

class Learn extends Controller
{
    public function index()
    {
        $user=new User();
     //$reulst=$user->schemaInfo()->getColumns();
        $reulst=$user->get(17);
     return $this->writeJson(200,$reulst);
    }
}

在这里插入图片描述

查询所有数据

  public function  findAll(){
        $user=new User();
        $lastResult = $user->all(null,true);
        return $this->writeJson(200,$lastResult);
    }

在这里插入图片描述

根据条件查询

  public function  findByWhere(){
         $result=User::create()->where(["phone"=>"19153475624"])->get();
         var_dump($result);
       // $result=User::create()->where(2)->get();
        //$result=User::create()->where('id', 2, '=')->get();
        return $this->writeJson(200,$result);
    }

在这里插入图片描述

通过模型执行原生sql

   public function findRaw(){
        $queryBuild = new QueryBuilder();
        $queryBuild->raw("select u.id,u.name,u.phone,su.sub_name,u.create_time from  easy_sub_user inner join easy_user u on su.user_id=u.id");
        $data=DbManager::getInstance()->query($queryBuild,true,"default");
        var_dump($data);
        return $this->writeJson(200,$data->getResult());
    }

在这里插入图片描述
模型新增

   public function  add(){
        $user=new User();
        $user->setAttr("name","hsl");
        $user->setAttr("phone","18334111890");
        $id=$user->save();
        var_dump($id);
    }

在这里插入图片描述
模型删除

public function  del(){
    $user = User::create()->get(23);
    $result=$user->destroy();
    return $this->writeJson(200,$result);
}

在这里插入图片描述
模型更新

    public function  update(){
        $user = User::create()->get(19);
//获取后指定字段赋值
        $user->name = "Tom";
        $result=$user->update();
        return $this->writeJson(200,$result);
    }

在这里插入图片描述
关联查询

   public function  many(){

        $data=User::create()->alias("u")
            ->join("easy_sub_user sb","sb.user_id=u.id","inner")
            ->select();
        return $this->writeJson(200,$data);
    }

在这里插入图片描述

  • 4
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值