1

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

我的案子有点复杂。我有一个用作存储的数据库表,并且我有扩展它的模型。

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

    AbstractHtmlFormElements扩展Phalcon\MVC\Model {}

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

    文本扩展AbstractHtmlFormElements {}

    日期扩展AbstractHtmlFormElements {}

我想要一个“容器”类 HtmlPage ,它将使用$this->hasMany()类型的关系链接TextDate和所有其他特定对象。

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

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

谢谢!

4

1 回答 1

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/

于 2014-02-12T08:03:42.523 回答