我正在使用Phalcon的MVC模型,并希望利用对象关系。
我的案件涉及一些复杂问题。我有一个数据库表作为存储,我有扩展它的模型。
我有一个抽象类:
类 AbstractHtmlFormElements 扩展 Phalcon \ MVC \ Model {}
我有一组类,每种类型的HTML表单元素都有一个:
类文字扩展 AbstractHtmlFormElements {}
类日期扩展 AbstractHtmlFormElements {}
我希望有一个“容器”类HtmlPage,它可以使用 $ this-> hasMany链接 Text , Date 和所有其他特定对象)关系类型。
是否可以在这种情况下加载所有依赖类以利用 $ htmlPage-> getRelated()功能?
我不想分别描述HtmlPage和每个问题类型之间的关系,因为它会针对同一个表“html_form_elements”创建冗余查询。是否可以使用一个查询加载描述不同模型的所有行?
谢谢!
答案 0 :(得分:0)
这是一个同时关系形式1模型的例子:
class Model_UserTest extends \Phalcon\Mvc\Model {
public function initialize() {
$this->hasManyToMany(
"id", "Model_TagToTest", "test_id", "tag_id", "Model_UserTag", "id", array(
'alias' => 'tags'
));
$this->hasManyToMany(
"id", "Model_QuestionToTest", "test_id", "question_id", "Model_UserQuestion", "id", array(
'alias' => 'questions'
));
// $this->hasMany("id", "RobotsParts", "robots_id");
$this->hasOne(
"id", "Model_UserTestPrintSettings", "test_id", array(
'alias' => 'printSettings'
));
}
}
我用来获得相关的是别名。例如
$m = Model_UserTest::findFirst();
$m->tags; // to get all related tags from model Model_UserTag they are connected by table Model_TagToTest
描述您需要的所有连接。 Phalcon非常聪明,可以让sql尽可能快地工作。如果你正在使用模型层,不要过多考虑实际的sql。在开发应用程序之后,总是收集慢查询日志,如果有的话 - 添加索引。只需99%的时间即可让您的网页快速响应。
在这种情况下,我的回合将是:当你没有问题时,不要考虑问题。
顺便说一句,对于服务器的监控,我推荐New Relic服务http://newrelic.com/