Я использую Cakephp V2.0 и на нем работает огромное приложение. Ниже приводится вопрос, с которым я сталкиваюсь сейчас.
Выпуск:
Выбор запроса — это то, что автоматически устанавливает условие, как «TableName.deleted»! = 1
Что на самом деле создает проблему, я хочу добавить свое пользовательское условие в этот запрос, чтобы получить все мягко удаленные записи, т.е. «TableName.deleted» == 1 .
но когда мы используем $this->paginate()
функция, она добавит условие по умолчанию в конце условия MySQL Query, а затем MySQL Query будет выглядеть так:
("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();
Может кто-нибудь, пожалуйста, дайте мне знать, что я должен сделать, чтобы решить эту проблему. любая помощь будет оценена!
Заранее спасибо.
Спасибо за ваши предложения и комментарии.
На самом деле я получил ответ за то же самое. мы создали поведение для того же
SoftDeletableBehavior.php
В котором мы определили родственные методы, которые добавляли условие «TableName.deleted»! = 1. и это также было упомянуто в модели, как показано ниже:
var $actsAs = array(
'SoftDeletable' => array(
'field' => 'deleted',
'find' => true
),
);
поэтому я только что сделал одно очень небольшое изменение, и оно работает.
var $actsAs = array(
'SoftDeletable' => array(
'field' => 'deleted',
'find' => false
),
);
Других решений пока нет …