#php #codeigniter #primary-key #datamapper
#php #codeigniter #primary-key #datamapper
Вопрос:
У меня есть таблица с именем usuario
, объект с тем же именем, и первичный ключ назван idusuario
. Я не могу его удалить, поскольку первичный ключ не имеет имени «id». Можно ли как-то обойти это ограничение?
Ответ №1:
Это должно сработать:
$this->db->delete('usuario', array('idusuario' => $value));
Согласно документации по активной записи CodeIgniter:
Первый параметр — это имя таблицы, второй — предложение where. Вы также можете использовать функции where() или or_where() вместо передачи данных во второй параметр функции:
Комментарии:
1. Это сделало свое дело. Я ожидал ответа о том, как это сделать с помощью Datamapper, но вы показали мне более простой способ. хехе, спасибо.
2. Рад помочь. Вы всегда должны стараться использовать Active Record, насколько это возможно, Для всех выборок, вставок и т. Д. Он автоматически очищает входные данные, защищая вас от атак SQL-инъекций.
3. Datamapper не использует активную запись внутри?
4. Я бы не был уверен. Я никогда им не пользовался
5. Я расскажу об этом подробнее. РЕДАКТИРОВАТЬ: Готово. Он действительно использует активную запись.
datamapper.php Line 1713: $this->db->insert($this->table, $data);
Ответ №2:
DataMapper, начиная с текущей версии, требует, чтобы первичный ключ назывался «id», и он должен быть целым числом. Это жестко запрограммировано, обойти это невозможно (если вы хотите использовать DataMapper).
Это ограничение будет снято в версии 2.