第一步安装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);
}