【问题标题】:Filter all find queries on entity CakePHP 3.6过滤实体 CakePHP 3.6 上的所有查找查询
【发布时间】:2019-09-06 14:42:57
【问题描述】:
假设我有一个文章数据库,我只想显示在网站上发布的文章(其中已发布 = 1)。而不是在每个查找查询中添加条件,如下所示:
$articles = $this->Articles->find('all')->where(['published' => 1]);
有没有一种方法可以让我在一个地方自动将此条件应用于整个应用程序中的所有查找查询?如果有怎么办?
【问题讨论】:
标签:
php
cakephp
php-7
cakephp-3.6
【解决方案1】:
您可以使用beforeFind。这将在您的文章模型上的每个查找查询之前触发。这是documentation
这里是如何使用它
public function beforeFind($event, $query, $options, $primary)
{
$query->where(['article.visible' => 1]);
return $query;
}