CakePHP -分页查询附加默认条件“TableName.deleted”!= 1”

kpbwa7wx  于 2022-11-12  发布在  PHP
关注(0)|答案(1)|浏览(74)

我正在使用Cakephp V2.0,并有巨大的应用程序在上面工作。下面是我面临的问题。
选择查询是什么自动设置条件如"TableName.deleted" != 1
创建问题实际上是什么,我想在此查询中添加我的自定义条件,以获取所有软删除的记录,即:“表名称.已删除”== 1.
但是当我们使用$this->paginate()函数时,它会在MySQL查询条件的末尾追加默认条件,然后MySQL查询将如下所示:

("TableName.deleted" == 1) AND "TableName.deleted" != 1 Order By xyz

因此,它只通过最后一个条件来检索记录集,并只返回未删除的记录。
我如何删除这个默认的CakePHP条件(“TableName.deleted”!= 1)?

已编辑(添加的代码):

if (isset($this->passedArgs['showdeleted']) && $this->passedArgs['showdeleted'] == 1) {
            $displayConditions['AND']['tableName.deleted'] = "1";
        } else {
            $displayConditions['AND']['tableName.deleted'] = "0";
        }

        $this->paginate = array(
            'conditions' => $displayConditions,
            'fields' => $this->displayFields,
            'limit' => $show_page,
            'group' => 'tableName.id',
            'contain' => array(
                'tbl1',
                'tbl2',
                'tbl3',
                'tbl4',
                'tbl5',
            ),
        );

        $returnRecords = $this->paginate();

我应该怎么做才能解决这个问题?

ql3eal8s

ql3eal8s1#

感谢您的建议和意见。
事实上,我得到了同样的答案。我们已经为同样的问题创造了行为。

软删除行为.php

其中,我们定义了附加条件**“TableName.deleted”!= 1**.的相关方法,并且在模型中也提到了该条件,如下所示:

var $actsAs = array(
        'SoftDeletable' => array(
            'field' => 'deleted',
            'find' => true
        ),

    );

所以我只是做了一个很小的改变,它的工作。

var $actsAs = array(
            'SoftDeletable' => array(
                'field' => 'deleted',
                'find' => false
            ),

        );

相关问题