Я хотел сделать запрос к базе данных 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
ошибка не может быть загружена.
Я подозреваю что work_staffs
это таблица, а не модель. Класс QueryBuilder использует Модели для выбора.
В app/models/WorkStaffs.php
у вас должно быть что-то, что как минимум следующее:
<?php
class WorkStaffs extends Phalcon\Mvc\Model {
}
Который вы могли бы потом использовать где угодно. Вы используете инжектор зависимостей FactoryDefault, поэтому у вас уже есть служба модели. На этом этапе в вашем контроллере действительно легко работать, используя WorkStaffs::find()
чтобы получить все результаты в таблице.
1 / У вас должен быть файл модели (php): WorksStaffs.php в папке модели
<?php
class WorkStaffs extends Phalcon\Mvc\Model {
}
2 / В предложении «От» QueryBuilder вы должны внедрить пространство имен вашей модели «Workstaffs»
$di = FactoryDefault::getDefault()->get('modelsManager')
->createBuilder();
$result = $di
->from('WorkStaffs');
Надеюсь, это поможет вам