【问题标题】:Zend Quickstart Tutorial Conceptual ProblemZend 快速入门教程概念问题
【发布时间】:2023-03-31 13:49:01
【问题描述】:

我正在尝试学习 zend 框架,并设法完成了他们拥有的整个快速入门教程。但是,有些东西我根本无法理解,希望有人能帮助我。

在本教程中,您将创建一个 db-table 类、一个映射器和一个模型。我阅读了文档,并了解了 db-table 类的用途(定义表、关系、创建/获取行)。当您查询 db-table 类时,您会得到一个 db-table-row 类的对象,您可以使用它来操作 db 中的特定记录。

但是,我不明白为什么教程会让我创建一个映射器和一个模型,也不明白在模型中定义 getter/setter 方法的原因(这些不应该由 db-table-row 提供吗?)

即使在控制器中,他们从模型类和映射器类创建了一个对象,然后他们完全忽略了模型对象,只使用了映射器对象。

有没有必要拥有这 3 个课程?各自实现了哪些不同的目的?据我所知,我只需要 db-table 类,对吗?

【问题讨论】:

    标签: zend-framework zend-db-table


    【解决方案1】:

    当你查询 db-table 类时,你会得到一个类对象 数据库表行

    不,你得到的是 db-table-rowset ,它是 row 的集合。 其次

    你甚至不需要 db-table 类

    $dbTable = new Zend_Db_Table('tableName'); 
    

    但是由于 db-table 类允许您在其中定义其他表之间的关系(业务逻辑),因此变得很重要。

    当实体对例如 User Table 很重要时,

    db-table-row 变得很重要。在您为用户自定义的 db-table-row 中,您可以添加方法 getTopics();,该方法返回由 theat 用户创建的所有主题的行集,从而进一步帮助处理业务逻辑。

    【讨论】:

    • 很好,但是他们在快速入门教程中使用的映射器和普通模型呢?他们是必需的吗?他们有什么目的吗?
    • 如果数据库表是数据源,则使用 mapper(DbTable) 。如果数据来自任何其他来源,例如 websrrvice(阅读 twitter 时间线),则使用普通模型。如果 db 表族定义了您的实体,则将该实体定义为普通模型,该模型通过组合使用这些 db 表。
    猜你喜欢
    • 1970-01-01
    • 2018-12-08
    • 1970-01-01
    • 1970-01-01
    • 2011-04-18
    • 1970-01-01
    • 1970-01-01
    • 2013-04-10
    • 1970-01-01
    相关资源
    最近更新 更多