我正在尝试创建像
这样的查询SELECT *
FROM course
where course.id IN(
SELECT DISTINCT(course_id)
FROM course_timing tim
WHERE tim.date >= CURDATE()
)
我已经设置了模型管理器
$di->set('modelsManager', function() {
return new Phalcon\Mvc\Model\Manager();
});
但是当我尝试使用
时 $phql = "SELECT * FROM CourseTiming";
$rows = $this->modelsManager->executeQuery($phql);
我正在
模型' CourseTiming'无法加载
或者有没有办法使用Model :: find etc
运行上述查询答案 0 :(得分:5)
PHQL在查询中使用模型类(而不是db表名),因此您应该创建CourseTiming模型以通过PHQL访问db表:
<?php
class CourseTiming extends Phalcon\Mvc\Model
{
public $id;
....
public function getSource()
{
return 'course_timing'; // name of db table here
}
}
不要忘记在Phalcon加载器中注册模型目录:
$loader = new \Phalcon\Loader();
$loader->registerDirs(array(
'pathToModelsDir',
...
));
$loader->register();
另一种方法是通过Phalcon PDO访问数据库(在这种情况下您不需要创建CourseTiming模型)。
的index.php:
$di->setShared('db', function() {
$db = new Phalcon\Db\Adapter\Pdo\Mysql(array(
'host' => 'localhost',
'username' => 'root',
'password' => 'root',
'dbname' => 'my_db',
));
return $db;
});
控制器:
$records = $this->db->fetchAll("SELECT * FROM course_timing", Phalcon\Db::FETCH_ASSOC);