Как удалить запись с помощью CodeIgniter и Datamapper, если первичный ключ называется как угодно, но не «id»?

#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.