【问题标题】:Retrieving data in Symfony using the model class使用模型类在 Symfony 中检索数据
【发布时间】:2011-02-15 13:05:48
【问题描述】:

假设我有一个模型 Ecosystem 使用 symfony 从我的 schema.yml 自动生成。在代码中的某个时刻,我想从表中检索记录。

我知道有一些方法可以使用 Doctrine/Propel 类来做到这一点,但是,有没有办法直接使用模型来做到这一点?我一直在想这样的事情:

$ecosystem = new Ecosystem();
$records = $ecosystem->find(...);

顺便问一下,做这种事情的首选方法是什么?

我一直在使用 CakePHP 进行开发,而直接使用 Doctrine 进行查询对我来说似乎并不自然。如果我决定明天改用 Propel 怎么办?

谢谢!

【问题讨论】:

    标签: php symfony1 model doctrine


    【解决方案1】:

    假设您的模型是Ecosystem。 Doctrine 为您自动生成两个模型类:

    1. Ecosystem(在Ecosystem.class.php中定义)——这个类的对象是实际的ecosystem实体
    2. EcoSystemTable(在EcosystemTable.class.php 中定义)— 提供对Ecosystem 实体的管理 的单例类

    这就是为什么所有的实体管理功能都是用*Table 类来完成的。如何获得?

    Doctrine::getTable('Ecosystem')
    

    Doctrine_Core::getTable('Ecosystem')
    

    EcosystemTable::getInstance()
    

    $obj->getTable(); // where $obj is instance of Doctrine_Record
    

    进一步阅读:

    【讨论】:

      【解决方案2】:

      因为你可以这样做,只是你 *Table 类方法,例如: $record = Doctrine::getTable('Ecosystem')->find(1) 将返回 id = 1 的记录。您可以在此处阅读有关可用查找器的更多信息:http://www.doctrine-project.org/documentation/manual/1_0/en/dql-doctrine-query-language:magic-finders 我认为除非您关心性能,否则无需手动编写 DQL 查询就可以安全地离开。

      【讨论】:

      • 我的意思是即使不使用 Doctrine 类也可以进行查询。例如,在 CakePHP 中,您可以进行类似 $ecosystem->findById(1) 的查询
      • @elitalon:在您的示例中,生态系统也是一个学说类(扩展了 Doctrine_Table)。
      猜你喜欢
      • 2017-12-20
      • 1970-01-01
      • 1970-01-01
      • 2018-06-09
      • 1970-01-01
      • 2015-01-10
      • 2012-10-11
      • 2011-01-29
      • 1970-01-01
      相关资源
      最近更新 更多