2013-06-10 2 views
0

У меня есть таблица, у которой нет поля id, и в качестве первичного ключа используется поле 'app_no'.Cakephp сохраняет данные без id

Сейчас я должен делать сохранение этой модели/таблицы ... но в модели нет идентификатора $ id, и, следовательно, она терпит неудачу.

Есть ли способ, который я могу сделать с сохранением Model->save() без $id?

Примечания: таблица разделяется с другими проектами и поэтому не может вносить какие-либо изменения в структуру таблицы.

ответ

2

Используйте вместо этого Model::updateAll(). Первый параметр принимает новые значения, второй параметр - ваши условия.

Таким образом, вы могли бы сделать

$this->Model->updateAll(array("Model.value" => "'value'"),array("Model.name" => "name123")); 

Но будьте осторожны, в отличие от save(), это требует выражения MySQL.

Хорошо, сначала это звучало так, будто у вас не было первичного ключа. Если все, что вам нужно, это по-другому назвали поле PK, просто сделать это в модели:

public $primaryKey = 'app_no'; 

Или вы можете установить свойство прямо на объекте Model

$this->Model->primaryKey 
+0

это работает. Thx :) –

1

Вы можете установить первичный ключ ваша модель нравится:

//Model 
var $primaryKey = 'app_no'; 

Тогда сохранение будет работать так, как вам нужно.

Пожалуйста, проверьте раздел "PrimaryKey" по этой ссылке: http://book.cakephp.org/2.0/en/models/model-attributes.html

+0

первичный ключ уже установлен. И сохранение работает только для сохранения новой записи, но не для сохранения существующих записей. –

+0

Я использовал это для доступа к таблице без поля id (я создал hibrid wordpress, который использует модели и контроллеры торта). В таблице usermeta используется umeta_id как основной ключ. var $ primaryKey = 'umeta_id'; сделал это. (для доступа к специальной таблице используется общедоступный $ useTable = 'ry1k_usermeta'; –

Смежные вопросы