Php 如何添加一个“;最新事件/最新更新”;使用Symfony 1.4构建的网站的一节?

Php 如何添加一个“;最新事件/最新更新”;使用Symfony 1.4构建的网站的一节?,php,model-view-controller,symfony1,doctrine,symfony-1.4,Php,Model View Controller,Symfony1,Doctrine,Symfony 1.4,我正在用symfony1.4开发一个网站。用户上传照片,照片保存在数据库中 现在在主页上,我有一些内容,我想有一个部分,显示最近上传的照片。我不确定做这件事的最好方法是什么。你能给我指一下正确的方向吗 我能想到的唯一方法是让$sf_content保留主要内容(来自应用程序/模块),对于最近的上传,使用layout.phpdo database access+business logic+rendering,但这将违反MVC,并且每次用户浏览网站时都会涉及大量数据库访问 可以改进吗?您可以使用组件

我正在用symfony1.4开发一个网站。用户上传照片,照片保存在数据库中

现在在主页上,我有一些内容,我想有一个部分,显示最近上传的照片。我不确定做这件事的最好方法是什么。你能给我指一下正确的方向吗

我能想到的唯一方法是让
$sf_content
保留主要内容(来自应用程序/模块),对于最近的上传,使用
layout.php
do database access+business logic+rendering,但这将违反MVC,并且每次用户浏览网站时都会涉及大量数据库访问


可以改进吗?

您可以使用组件

apps/yourapp/modules/yourmodule/actions/components.class.php

class yourmodulenameComponents extends sfComponents {


    public function executeRfoto() {

        $this->photos = Doctrine_Core::getTable('Photo') ->getRecentPhotos();

    }
    foreach ($photos as $photo){
// Make some stuff
}
模型中

public function getRecentPhotos()
  {
    $q = $this->createQuery('a')
              ->addORDERBY('DESC');

    return $q->execute();
  }
在你的apps/yourapp/modules/yourmodule/themplates/\u rfoto.php中

class yourmodulenameComponents extends sfComponents {


    public function executeRfoto() {

        $this->photos = Doctrine_Core::getTable('Photo') ->getRecentPhotos();

    }
    foreach ($photos as $photo){
// Make some stuff
}
layout.php或其他您想要放置照片的地方:

   <?php include_component('yourmodule' ,'rfoto')?>


感谢您的回复,但这会减少数据库访问量吗?我认为这种方式是symfony方式,在您的情况下,您有非常简单的查询(从一个表中获取10或20个最后的图像),我认为在您的情况下,不会有一些关键负载。实际情况不同。图像上传只是它的一个简单版本。那么有没有更好的方法呢?你也可以启用APC,你可以在这里阅读。你的项目中每小时有多少用户?不多。10-20左右。所以我想这不会是个问题。我已经在用APC了。