如何使用用户查询构建器Phalcon

时间:2018-12-08 02:01:01

标签: php laravel phalcon builder

我想像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(); } } 错误。

2 个答案:

答案 0 :(得分:0)

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

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

<?php
    class WorkStaffs extends Phalcon\Mvc\Model {
    }

然后您可以在任何地方使用。您正在使用FactoryDe​​fault依赖项注入器,因此您已经拥有模型服务。那时,在您的控制器中,使用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');

希望它可以为您提供帮助