Как пользовательский конструктор запросов phalcon

Я хотел сделать запрос к базе данных 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, но в модели он все еще работает, но модель work_staffs ошибка не может быть загружена.

0

Решение

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

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

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

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

0

Другие решения

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

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

2 / В предложении «От» QueryBuilder вы должны внедрить пространство имен вашей модели «Workstaffs»

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

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

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

0

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector