【发布时间】:2015-10-26 10:01:20
【问题描述】:
我正在使用 Cakephp V2.0 并且有大量的应用程序正在运行它。以下是我面临的问题。
Select Query 是自动设置的条件,如"TableName.deleted" != 1
实际上是哪个创建问题,我想在此查询中添加我的自定义条件以获取所有软删除的记录,即:"TableName.deleted" == 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();
我应该怎么做才能解决这个问题?
【问题讨论】:
-
您能否在您的问题中添加一些代码,以便我们了解您是如何构建查询的? :-)
-
How do i remove this default CakePHP condition- 这不是默认的 CakePHP 条件。你需要展示你在做什么。 -
@drmonkeyninja & AD7six :我在上面的问题中添加了示例代码。请检查。我添加了一个与此已删除字段相关的条件,它的工作原理是我在上面的问题中解释的。
-
问题中的任何内容均不对
"TableName.deleted" != 1负责。我将首先查看您正在使用的行为,然后(多么令人惊讶)删除/禁用您可能正在使用的软删除行为,如果您想显示已删除的记录。 -
SO 读者的职责不是猜测您在哪里放置/添加了执行您使用的工具不会自动发生的事情的代码。请做一些调试/工作,或者只是想你的问题。
标签: php mysql cakephp pagination