2012-07-17 15 views
0

延伸我在這個學說模型概念有點糊塗Doctrine_Table Vs的課,可以說我們的表稱爲「文章」 主義會產生類稱爲 我使用Zend框架和學說1.2從BaseClass的

  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; 
     } 
+0

你爲什麼不使用Doctrine2? – Gediminas 2012-07-18 10:46:32

+0

@Gediminas因爲我覺得很難從Doctrine 1.2到Doctrine 2很容易 – KJA 2012-07-18 10:48:46

回答

1

Article.php不應該叫ArticleTable.php除非真的,真的需要。在表類,你將只持有查詢由控制器進行調用,如:

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

上面的代碼是簡單的,你將不得不自動完成任何IDE。

不在Article.php中調用查詢的原因是您有一天可以更輕鬆地轉換到Doctrine2。

對於表格調用tbl_article或者只是文章,doctrine會生成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)做什麼?我沒有看到該代碼的任何一點。

+0

好吧那麼它會返回ArticleTable對象的權利?我必須這樣做$ article-> fromArray($ fArticle);在控制器中? – KJA 2012-07-19 08:45:20

+0

你能告訴我什麼Article.php – KJA 2012-07-19 09:00:57

相關問題