我想像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');
希望它能帮助你