Как пользовательский конструктор запросов phalcon - PullRequest
0 голосов
/ 08 декабря 2018

Я хотел сделать запрос к базе данных phalcon, как конструктор запросов laravel, но я получил эту ошибку и уверен, что назвал правильное имя модели:

error: Model 'work_staffs' could not be loaded

Модель:

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;
  }
}

/ PUBLIC / INDEX:

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();
  }
}

Я не установил DI modelsManager, но в модели он все еще работает, но ошибка Model 1010 * не может быть загружена.

Ответы [ 2 ]

0 голосов
/ 11 декабря 2018

1 / У вас должен быть файл модели (php): WorksStaffs.php в папке модели

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

2 / В пункте 'From' в QueryBuilder вы должны ввести пространство имен вашегоМодель 'Workstaffs'

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

$result = $di
->from('WorkStaffs');

Надеюсь, она вам поможет

0 голосов
/ 08 декабря 2018

Я подозреваю, что work_staffs это таблица, а не модель.Класс QueryBuilder использует для выбора модели.

В app/models/WorkStaffs.php у вас должно быть как минимум что-то вроде следующего:

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

, которое вы могли бы затем использовать где угодно.Вы используете инжектор зависимостей FactoryDefault, поэтому у вас уже есть служба модели.На этом этапе в вашем контроллере действительно легко работать, используя WorkStaffs::find(), чтобы получить все результаты в таблице.

...