过滤实体 CakePHP 3.6 上的所有查找查询

Filter all find queries on entity CakePHP 3.6

假设我有一个文章数据库,我想只显示网站上发布的文章(其中 published = 1)。而不是像下面这样在每个查找查询中添加条件:

$articles = $this->Articles->find('all')->where(['published' => 1]);

有没有一种方法可以自动将此条件应用于整个应用程序中同一位置的所有查找查询?如果有怎么办?

您可以使用 beforeFind。这将在您的文章模型上的每个查找查询之前触发。这里是 documentation

这里是使用方法

public function beforeFind($event, $query, $options, $primary)
{

    $query->where(['article.visible' => 1]);

    return $query;
}