如何使用查询生成器phalcon



我想像laravel的查询生成器一样查询phalcon数据库,但我遇到了这个错误,我确信我调用了正确的模型名称:

error: Model 'work_staffs' could not be loaded

型号:

use PhalconDIFactoryDefault;
class WorkStaffModel
{
public static function getAll()
{
$di = FactoryDefault::getDefault()->get('modelsManager')
->createBuilder();
$result = $di
->from('work_staffs')
->getQuery()
->execute();
return $result;
}
}

/公共/索引:

use PhalconDiFactoryDefault;
use PhalconMvcApplication;
use PhalconLoader;
use PhalconMvcModelManager as ModelsManager;
$di     = new FactoryDefault;
$app    = new Application;
$loader = new Loader;
$loader->registerDirs(
[
dirname(__DIR__) . '/app/controllers',
dirname(__DIR__) . '/app/models',
dirname(__DIR__) . '/service'
]
);
$loader->register();
include dirname(__DIR__) . '/lib/core.php';
include dirname(__DIR__) . '/lib/di.php'; 
// HERE DI INCULE DI FILE BUT IN DI FILE JUST INCLUDED:set conf,router,seesion,view
try
{
date_default_timezone_set('Asia/Ho_Chi_Minh');
$app->setDi($di);
$res = $app->handle();
$res->send();
}
catch(Exception $e)
{
if($e->getMessage() != 'Response was already sent') {
echo $e->getMessage();
}
}

我没有设置DI modelsManager,但在模型中它仍然可以工作,但无法加载modelwork_staffs错误。

我怀疑work_staffs是一个表,而不是模型。QueryBuilder类使用Models进行选择。

app/models/WorkStaffs.php中,您应该至少拥有如下内容:

<?php
class WorkStaffs extends PhalconMvcModel {
}

然后你可以在任何地方使用。您正在使用FactoryDefault依赖项注入器,因此您已经准备好了模型服务。在这一点上,在控制器中使用WorkStaffs::find()来获得表中的所有结果非常容易。

1/您应该在模型的文件夹中拥有模型文件(php(:WorksStaffs.php

<?php
class WorkStaffs extends PhalconMvcModel {
}

2/在QueryBuilder的子句"From"中,您应该注入"Workstaffs"模型的命名空间

$di = FactoryDefault::getDefault()->get('modelsManager')
->createBuilder();
$result = $di
->from('WorkStaffs');

希望它能帮助你

相关内容

  • 没有找到相关文章

最新更新