代码之家  ›  专栏  ›  技术社区  ›  Peter Smit

在理论模型中使用静态查找方法是一种好的做法吗?

  •  2
  • Peter Smit  · 技术社区  · 14 年前

    有时我有复杂的查找过程,在控制器中重复这段代码让我感觉很不舒服。

    现在我想,可以这样做:

    class User extends BaseUser
    {
    
        private static function getTable()
        {
            return Doctrine_Core::getTable('User');
        }
    
        public static function findAll()
        {
            return getTable()->findAll();
        }
    
        public function currentEnrolments() {
            $query = Doctrine_Query::create()
                    ->from('Enrolment e')
                    ->where('e.user_id = ?', $this->id)
                    ->addWhere('e.finish_date IS NULL');
            return $query->execute();
        }
    
    }
    

    这是个好习惯吗?或者我应该只放置非静态成员,比如我所显示的查询?

    2 回复  |  直到 14 年前
        1
  •  2
  •   Pelle    14 年前

    一般来说,如果它节省了你的时间,就没有什么可以失去,每一分钟你都可以节省下来获得。

    函数类 getTable findAll 可能不会为您节省很多钱,但是为查找更具体的应用程序内容而进行的自定义查询绝对是值得的。

        2
  •  1
  •   Julien    14 年前

    我也有同样的方法。

    • 我不想麻烦你的静态代理 getTable() findAll() .
      • 这不会给代码增加任何价值
      • 我,个人,从不打电话 FAND() 在您通常需要的任何模型对象上
        • 对照外键进行交叉检查
        • 分页/排序
    • 关于你 currentEnrolments() 函数,这是值得做的,因为您对此有一些逻辑 ->addWhere('e.finish_date IS NULL') 从而说明你不能使用“魔法”教义关系 ->Enrolment . 也许这是第二条教义正在解决的问题,需要检查一下……

    当做