Как заставить вставлять в CakePHP?
У меня есть архивная таблица MySQL со следующей структурой:
`histories`
`uid` int(10) unsigned NOT NULL,
`type` varchar(255) NOT NULL,
`param` int(11) NOT NULL,
`param2` varchar(255) NOT NULL,
`time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
ENGINE=ARCHIVE DEFAULT CHARSET=latin1;
Я не хочу добавлять автоинкрементный столбец id. Движок этой таблицы - архив, и он делает именно то, что мне нужно, с этой структурой.
Я хочу сохранить как это:
$this->History->create();
$this->History->save(['uid' => uid, 'type' => 'deleted_entry', 'param' => $thing_id]);
Но CakePHP вынуждает обновление, которое я не хочу, и движок ARCHIVE не поддерживает. Кажется, что Cake ищет первичный ключ uid, находит его и решает, что он должен обновиться, и, кажется, нет флага для принудительной вставки. Я не хочу прибегать к $this->Model->query()
,
ОБНОВЛЕНИЕ: Установить $primaryKey = null
в AppModel. $this->create();
потом вставлю.
class History extends AppModel {
public $primaryKey = null;
}
Если вы хотите сделать обновление после, просто:
$this->History->primaryKey = 'uid';
перед save()
1 ответ
Вы можете сказать Cake 2, что у вас нет первичного ключа, установив модель $primaryKey
собственность на null
:
$this->History->primaryKey = null;
$this->History->create();
$this->History->save(['uid' => uid, 'type' => 'deleted_entry', 'param' => $thing_id]);