【问题标题】:Propel understanding peers推动理解同行
【发布时间】:2012-02-15 05:03:09
【问题描述】:

我正在使用 symfony 1.4,并且对推进还很陌生。我正在查看由其他开发人员编写的新项目中的现有代码库。

通俗地说,将模型分为两个类,modelmodelPeer 类的目的是什么?

我会假设一个获取业务类型数据,另一个代表更多的数据层,但在检查这两个类时我没有看到任何类型的区别。

任何帮助表示赞赏:)

【问题讨论】:

    标签: orm symfony1 propel


    【解决方案1】:

    只需将其视为行(模型)和表(对等)。很简单,但是在我这样解释之后,一些初学者得到了这个想法:)

    【讨论】:

    • 谢谢。加入一个遗留的 1.2 Symfony 项目,这让我继续前进
    • 天啊,如果有人在一周前告诉我这个。惊人的解释。
    【解决方案2】:

    好吧,最好忘记 Peer 类。我的建议是永远不要使用它们——在 Propel2 中 Peer 类无论如何都会被删除。

    然后,您只需要处理一个 ActiveRecord API(模型类)和一个 ActiveQuery API。

    编辑:阅读 https://github.com/propelorm/Propel2/issues/36 以了解 Peers 处理的内容。作为开发人员,您应该在这部分放置任何代码。 AR和AQ绰绰有余。

    【讨论】:

    • -1,对不起。如果 OP 使用的是 Propel 1.x,那么 peers 是必不可少的——如果不使用或理解它们,就无法使用这一系列的 Propel! Peers 用于保存表/列名,并用于静态调用表范围的数据库操作,例如doSelect
    • 不,Peers 不是必要的,因为提供了 ActiveQuery。你不需要处理这些类。我知道什么是 Peer 类,请查看我的个人资料...
    • 嗨威廉。当您说您的建议是永远不要使用它们时,您的意思是不要将代码放入其中?据我所知,在 Propel 1.x 中避免 使用 对等点是不可能的。我可以使用查询类来查找列名或表名,例如,不使用MyPeer::TABLE_NAMEMyPeer::COLUMN_NAME?我可以在不使用 Peer (MyPeer::getTableMap()) 的情况下获取表的相关 TableMap 吗?我之所以这样问,部分是因为调整我当前的编码以避免同行是很好的,但我目前认为有些情况是不可避免的。
    • 我认为 doSelect 不是必需的,因为可以(应该:-)使用可链接查询类。
    • 嗨@william-durand:我可以按您的要求回答上述问题吗?我认为这将有利于更广泛的社区。谢谢!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-12-23
    • 2020-02-23
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多