我对这个Doctrine模型概念感到有些困惑,让我们说一个名为“article”的表 Doctrine会生成一个叫做的类 我正在使用Zend框架和Doctrine 1.2
以这种方式调用控制器中的 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 :(得分:2)
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 ;
}
}
所有这些只是一些例子,在现实生活中它更有用。
你实际上是想用这个来自theArray($ fArticle)做什么?我没有看到该代码的任何意义。