Я использую UpdateAll() вместо того, что учебник предложилCakePHP UpdateAll() не работает
$this->Post->id = $id;
У меня нет столбца ID в моей таблице. Когда я запускаю этот код -
public function edit($user_id = null) {
if (!$user_id) {
throw new NotFoundException(__('Invalid post'));
}
$user_info = array('conditions' => array('User.user_ID' => $user_id));
$user = $this->User->find('all', $user_info);
if (!$user) {
throw new NotFoundException(__('Invalid User ID'));
}
if ($this->request->is('put')) {
$data = $this->request->input('json_decode');
//$this->set('new_user', $data);
$this->User->updateAll(
array('User.status' => 'ooactive'), //fields to update
array('User.user_id' => $user_id));
}
}
Я получаю эту ошибку -
Error: SQLSTATE[42S22]: Column not found: 1054 Unknown column 'ooactive' in 'field list' SQL Query: UPDATE
Smooch
.users
ASUser
SETUser
.status
= ooactive WHEREUser
.user_id
= 3
Я не знаю, почему я получаю эту ошибку любая помощь будет удивительным, спасибо
EDIT:
Текущий код, я решил это сделать так, как показано в учебнике блога на CakePHP.org -
public function edit($user_id = null) {
if (!$user_id) {
throw new NotFoundException(__('Invalid post'));
}
$user_info = array('conditions' => array('User.user_ID' => $user_id));
$user = $this->User->find('all', $user_info);
if (!$user) {
throw new NotFoundException(__('Invalid User ID'));
}
if ($this->request->is('put')) {
$this->User->user_id = "user_id";
$data = $this->request->input('json_decode');
if($this->User->save($data));
}}
ERROR -
Error: SQLSTATE[23000]: Integrity constraint violation: 1062 Duplicate entry '0' for key 'PRIMARY' SQL Query: INSERT INTO
Smooch
.users
(status
) VALUES ('inaaaaaaactive')
Это превращает его в INSERT заявление, не знаю, почему.
Я попытался выше, и это привело к большему количеству проблем, поэтому я попытался вернуться к тому, как говорят официальные учебники cakePHP, чтобы сделать это - $ this-> Post-> id = $ id; Вот где я думаю, что волшебство случается, что делает его оператором обновления. Как мне настроить этот код ($ this-> Post-> id = $ id;), если мой первичный ключ - user_id? Я буду обновлять свой пост, чтобы отразить текущий код. – retroCheck
Вы можете установить первичный ключ в другое поле с помощью $ this-> Post-> primaryKey = 'field'; Я не знаю, работает ли это для вас. –
, к сожалению, не работает. – retroCheck