0

我对这个 Doctrine 模型概念有点困惑,假设我们一个名为“文章”的表格 Doctrine 将生成名为我正在使用 Zend 框架和 Doctrine 1.2 的类

  1. 模型/生成/BaseArticle.php
  2. 模型/ArticleTable.php
  3. 模型/Article.php

这样在控制器中调用ArticleTable是真的吗

$tableArticle = Doctrine::getTable('Article');

然后像这样将它保存在文章对象中

 $article = new Article();
 $fArticles = $tableArticle->getFeaturedArticles();
 foreach ($fArticles as $fArticle) {
         $article->fromArray($fArticle);
         echo $article->title
        }

或者我必须让 Article.php调用 ArticleTable?然后在控制器中启动一个Article.php对象?

class Article extends BaseArticle
{

      public function getFArticles()
      {
           $tableArticle = Doctrine::getTable('Article');
           $obj =  $tableArticle->getFeaturedArticles();
          return $obj;
      }
4

1 回答 1

2

Article.php 不应该调用 ArticleTable.php,除非真的非常需要。在表类中,您将只保存由控制器调用的查询,例如:

$featuredArticles = ArticleTable::getInstance()->getFeatured() ;

上面的代码更简单,你可以在任何 IDE 中自动完成。

不在 Article.php 中调用查询的原因是有一天你会更容易过渡到 Doctrine2。

对于表调用 tbl_article 或只是文章,学说将生成 Article.php 和 BaseArticle.php。不得手动更改基类。

文章类是您的逻辑所在。例如,您获取数据库中所有文章的列表。当你显示它们时,你希望专题文章有一个星号(只是一个例子):

控制器:

$allArticles = ArticleTable::getInstance()->findAll() ;

模板(此处为 Smarty 版本):

{foreach $allArticles as $article}

  {if $article->isFeatured()}  <img src=.. some image ..>{/if}

  <h5>{$article->title}

{/foreach}

和模型类

class Article extends BaseArticle 
{
    const STATUS_FEATURED = 1 ;

    public function isFeatured()
    {
        return $this->status == self::STATUS_FEATURED ;
    }
}

所有这些只是一些例子,在现实生活中它更有用。

你实际上想用这个 fromArray($fArticle) 做什么?我看不到该代码的任何意义。

于 2012-07-19T07:23:34.200 回答