我正在使用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();
我应该怎么做才能解决这个问题?
1条答案
按热度按时间ql3eal8s1#
感谢您的建议和意见。
事实上,我得到了同样的答案。我们已经为同样的问题创造了行为。
软删除行为.php
其中,我们定义了附加条件**“TableName.deleted”!= 1**.的相关方法,并且在模型中也提到了该条件,如下所示:
所以我只是做了一个很小的改变,它的工作。