我想像laravel的查询生成器一样查询phalcon数据库,但是出现了这个错误,并且我确定我已经调用了正确的模型名称:
List.tl lst
型号:
error: Model 'work_staffs' could not be loaded
/ PUBLIC / INDEX:
use Phalcon\DI\FactoryDefault;
class WorkStaffModel
{
public static function getAll()
{
$di = FactoryDefault::getDefault()->get('modelsManager')
->createBuilder();
$result = $di
->from('work_staffs')
->getQuery()
->execute();
return $result;
}
}
我没有设置DI modelsManager,但是在模型中它仍然可以工作,但是无法加载Model use Phalcon\Di\FactoryDefault;
use Phalcon\Mvc\Application;
use Phalcon\Loader;
use Phalcon\Mvc\Model\Manager 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();
}
}
错误。
答案 0 :(得分:0)
我怀疑work_staffs
是一个表,而不是模型。 QueryBuilder类使用模型进行选择。
在app/models/WorkStaffs.php
中,您应该至少具有以下内容:
<?php
class WorkStaffs extends Phalcon\Mvc\Model {
}
然后您可以在任何地方使用。您正在使用FactoryDefault依赖项注入器,因此您已经拥有模型服务。那时,在您的控制器中,使用WorkStaffs::find()
来获取表中的所有结果确实非常容易。
答案 1 :(得分:0)
1 /您应该在模型文件夹中包含模型文件(php):WorksStaffs.php
<?php
class WorkStaffs extends Phalcon\Mvc\Model {
}
2 /在QueryBuilder的'From'子句中,您应该插入'Workstaffs'模型的命名空间
$di = FactoryDefault::getDefault()->get('modelsManager')
->createBuilder();
$result = $di
->from('WorkStaffs');
希望它可以为您提供帮助