Phalcon \ Mvc \ Model与抽象类的关系

时间:2013-11-12 22:11:24

标签: php phalcon

我正在使用Phalcon的MVC模型,并希望利用对象关系。

我的案件涉及一些复杂问题。我有一个数据库表作为存储,我有扩展它的模型。

  1. 我有一个DB表“html_form_elements”,它描述了所有类型的HTML表单元素。假设列是 id type label
  2. 我有一个抽象类:

    AbstractHtmlFormElements 扩展 Phalcon \ MVC \ Model {}

  3. 我有一组类,每种类型的HTML表单元素都有一个:

    文字扩展 AbstractHtmlFormElements {}

    日期扩展 AbstractHtmlFormElements {}

  4. 我希望有一个“容器”类HtmlPage,它可以使用 $ this-> hasMany链接 Text Date 和所有其他特定对象)关系类型。

    是否可以在这种情况下加载所有依赖类以利用 $ htmlPage-> getRelated()功能?

    我不想分别描述HtmlPage和每个问题类型之间的关系,因为它会针对同一个表“html_form_elements”创建冗余查询。是否可以使用一个查询加载描述不同模型的所有行?

    谢谢!

1 个答案:

答案 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/