0

我目前有一个基于 Propel 的查询,如下所示:

$product = ProductQuery::create()
  ->filterByLive(1)
  ->filterByApproved(1)
  ->findOneByFilename($filename);

我经常使用这个查询,而不是链接两个过滤器,我想知道是否可以创建一个封装它们的新过滤器?这意味着,如果我将来要添加一个额外的过滤器,那么我可以简单地用这个单一的方法来完成,而不必遍历整个项目来添加新的过滤器。

例如:

$product = ProductQuery::create()
  ->filterByIsActive()
  ->findOneByFilename($filename);

这可能吗?

4

1 回答 1

2

您可以在您的创建所需的方法ProductQuery

public function filterByIsActive()
{
    return $this
            ->filterByLive(1)
            ->filterByApproved(1);
}

Propel 只生成一次这个文件,你可以将任何你喜欢的代码放在这个类中——它不会被覆盖。

于 2012-12-14T07:14:33.943 回答