CakePHP 3 - 你能为表设置默认条件吗?

Bad*_*sie 2 cakephp cakephp-3.0

CakePHP中有没有办法为表设置默认条件?

例如,我的表有一个deleted布尔值为0或1 的表.我想默认情况下限制应用程序只选择其中的行deleted = 0.

bur*_*zum 5

实现表的beforeFind()回调并在那里添加条件.

http://book.cakephp.org/3.0/en/orm/table-objects.html#beforefind

Cake\ORM\Table :: beforeFind(Event $ event,Query $ query,ArrayObject $ options,boolean $ primary)

在每个查找操作之前触发Model.beforeFind事件.通过停止事件并提供返回值,您可以完全绕过查找操作.对查询的其余部分保留对$ query实例所做的任何更改.$ primary参数指示这是否是根查询或关联查询.参与查询的所有关联都将触发Model.beforeFind事件.对于使用连接的关联,将提供虚拟查询.在事件侦听器中,您可以设置其他字段,条件,联接或结果格式化程序.这些选项/功能将复制到根查询中.

您可以使用此回调来根据用户的角色限制查找操作,或者根据当前负载做出缓存决策.