在 FastD 框架中使用 Phalcon 的 ORM, 替换 FastD 自带的 Medoo。
FastD是基于swoole的微服务框架。 Phalcon是一个用C编写的PHP框架,其ORM性能相当好。请阅读了解如何安装Phalcon?
$ composer require xueron/fastd-phalcon
修改配置文件 config/app.php
,添加 PhalconServiceProvider
,如下:
<?php
return [
// 省略了无关配置
'services' => [
\Xueron\FastDPhalcon\PhalconServiceProvider::class,
],
];
可选在 config.php 中增加如下配置:
<?php
return [
// 省略了其他配置
'phalcon' => [
'debug' => false, // 开启后,会DEBUG日志打印数据库调试日志。DEBUG日志在app.php中配置
'antiidle' => false, // 开启后,会通过定时器定时访问一下数据库,方式发呆断线
'interval' => 100, // 防发呆定时间隔,单位秒,建议比mysql的wait_timeout略短
'maxretry' => 3, // 出现断线,自动重连的尝试次数,尝试多次不成功,worker会退出
]
];
<?php
namespace Model;
use Xueron\FastDPhalcon\Model\Model;
class Subscription extends Model
{
// 指定表名称,默认与Model类名相同
public function getSource()
{
return 'subscriptions';
}
}
<?php
use Phalcon\Paginator\Factory;
$builder = phalcon_builder()
->columns('id, name')
->from('Robots')
->orderBy('name');
$options = [
'builder' => $builder,
'limit' => 20,
'page' => 1,
'adapter' => 'queryBuilder',
];
$paginator = Factory::load($options);
或者
<?php
use Phalcon\Paginator\Adapter\QueryBuilder as PaginatorQueryBuilder;
$builder = phalcon_builder()
->columns('id, name')
->from(Subscription::class)
->orderBy('name');
$paginator = new PaginatorQueryBuilder(
[
'builder' => $builder,
'limit' => 20,
'page' => 1,
]
);
return json([
'model' => (Subscription::class),
'data' => $paginator->getPaginate()
]);
如果你对 Phalcon 感兴趣,请阅读官方文档。
如果你想快速使用 Phalcon,可以尝试这个开箱即用的Pails框架。
如果你对Phalcon的DB和ORM不熟悉,请阅读下面的资料。