CakePHP updateAll () проблемы - PullRequest
       1

CakePHP updateAll () проблемы

10 голосов
/ 09 августа 2011

У меня есть таблица изображений с колонкой под названием type. Я просто хочу обновить все строки, чтобы изменить тип на gallery, где user_id соответствует определенному пользователю.

Я использую этот код

    $this->Image->updateAll(array('Image.type' => 'gallery'), 
    array('Image.user_id' => $this->Auth->user('id')));

Но я получаю эту ошибку: SQL Error: 1054: Unknown column 'gallery' in 'field list'

Почему галерея добавляется в список полей?
Разве синтаксис не должен устанавливать тип для галереи?

Спасибо!

Ответы [ 2 ]

24 голосов
/ 09 августа 2011

Нашел по инструкции :

Массив $ fields принимает выражения SQL. Литеральные значения следует заключать в кавычки вручную.

Таким образом, должно работать следующее:

$this->Image->updateAll(
    array('Image.type' => "'gallery'"), 
    array('Image.user_id' => $this->Auth->user('id'))
);
1 голос
/ 14 мая 2019

В вашей модели сделайте что-то подобное в вашем методе ....

public function saveImage($type='')
{
 // I would add a test for $type
 $db = $this->getDataSource();
 $fields = array('type' => $db->value($type, 'string')); // $db->value() will format strings needed for updateAll()
 $condition = array('user_id' => $this->Auth->user('id'));

 // I would add a test for user id before running updateAll()

  $this->updateAll($fields, $conditions);

}

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...