Создание таблиц базы данных
CakePHP спланирован быть независимым и будет работать с MySQL, MSSQL, Oracle, PostgreSQL и другими СУБД. Вы можете создавать таблицы в базе данных, как обычно. Когда вы создадите классы моделей, то автоматически будет устанавлено соответствие с созданными таблицами.
По соглашению имена таблицам даются во множественном числе и пишутся строчными буквами. Если имя таблицы состоит из нескольких слов, то слова надо разделять символом подчеркивания. Например, модели Ingredient должна соответствовать таблица с именем ingredients. Модели с именем EventRegistration – таблица event_registrations. CakePHP исследует ваши таблицы для определения типов данных каждого поля и использует эту информацию для автоматизации различных функциональных возможностей, например, таких, как вывод полей в отображение.
Имена полей, по соглашению, состоят из строчных букв и разделяются, при необходимости, символом подчеркивания.
Далее в этом разделе, вы узнаете, как ставит в соответствие типы полей базы данных и типы данных PHP, и как CakePHP может автоматизировать задачи на основе того, как определены ваши поля.
Ассоциации типов данных
Каждая СУБД определяет типы данных немного по разному. С помощью класса источников данных для каждой СУБД, CakePHP ставит в соответствие эти типы тому, что он распознал и создает единообразный интерфейс. Поэтому, не имеет значение на какой СУБД вам необходимо запустить приложение.
В таблицах ниже представлено соответствие для различных СУБД.
MySQL
| CakePHP Type | Field Properties |
| primary_key | NOT NULL auto_increment |
| string | varchar(255) |
| text | text |
| integer | int(11) |
| float | float |
| datetime | datetime |
| timestamp | datetime |
| time | time |
| date | date |
| binary | blob |
| boolean | tinyint(1) |
MySQLi
| CakePHP Type | Field Properties |
| primary_key | DEFAULT NULL auto_increment |
| string | varchar(255) |
| text | text |
| integer | int(11) |
| float | float |
| datetime | datetime |
| timestamp | datetime |
| time | time |
| date | date |
| binary | blob |
| boolean | tinyint(1) |
ADOdb
| CakePHP Type | Field Properties |
| primary_key | R(11) |
| string | C(255) |
| text | X |
| integer | I(11) |
| float | N |
| datetime | T (Y-m-d H:i:s) |
| timestamp | T (Y-m-d H:i:s) |
| time | T (H:i:s) |
| date | T (Y-m-d) |
| binary | B |
| boolean | L(1) |
DB2
| CakePHP Type | Field Properties |
| primary_key | not null generated by default as identity (start with 1, increment by 1) |
| string | varchar(255) |
| text | clob |
| integer | integer(10) |
| float | double |
| datetime | timestamp (Y-m-d-H.i.s) |
| timestamp | timestamp (Y-m-d-H.i.s) |
| time | time (H.i.s) |
| date | date (Y-m-d) |
| binary | blob |
| boolean | smallint(1) |
Firebird/Interbase
| CakePHP Type | Field Properties |
| primary_key | IDENTITY (1, 1) NOT NULL |
| string | varchar(255) |
| text | BLOB SUB_TYPE 1 SEGMENT SIZE 100 CHARACTER SET NONE |
| integer | integer |
| float | float |
| datetime | timestamp (d.m.Y H:i:s) |
| timestamp | timestamp (d.m.Y H:i:s) |
| time | time (H:i:s) |
| date | date (d.m.Y) |
| binary | blob |
| boolean | smallint |
MS SQL
| CakePHP Type | Field Properties |
| primary_key | IDENTITY (1, 1) NOT NULL |
| string | varchar(255) |
| text | text |
| integer | int |
| float | numeric |
| datetime | datetime (Y-m-d H:i:s) |
| timestamp | timestamp (Y-m-d H:i:s) |
| time | datetime (H:i:s) |
| date | datetime (Y-m-d) |
| binary | image |
| boolean | bit |
Oracle
| CakePHP Type | Field Properties |
| primary_key | number NOT NULL |
| string | varchar2(255) |
| text | varchar2 |
| integer | numeric |
| float | float |
| datetime | date (Y-m-d H:i:s) |
| timestamp | date (Y-m-d H:i:s) |
| time | date (H:i:s) |
| date | date (Y-m-d) |
| binary | bytea |
| boolean | boolean |
| number | numeric |
| inet | inet |
PostgreSQL
| CakePHP Type | Field Properties |
| primary_key | serial NOT NULL |
| string | varchar(255) |
| text | text |
| integer | integer |
| float | float |
| datetime | timestamp (Y-m-d H:i:s) |
| timestamp | timestamp (Y-m-d H:i:s) |
| time | time (H:i:s) |
| date | date (Y-m-d) |
| binary | bytea |
| boolean | boolean |
| number | numeric |
| inet | inet |
SQLite
| CakePHP Type | Field Properties |
| primary_key | integer primary key |
| string | varchar(255) |
| text | text |
| integer | integer |
| float | float |
| datetime | datetime (Y-m-d H:i:s) |
| timestamp | timestamp (Y-m-d H:i:s) |
| time | time (H:i:s) |
| date | date (Y-m-d) |
| binary | blob |
| boolean | boolean |
Sybase
| CakePHP Type | Field Properties |
| primary_key | numeric(9,0) IDENTITY PRIMARY KEY |
| string | varchar(255) |
| text | text |
| integer | int(11) |
| float | float |
| datetime | datetime (Y-m-d H:i:s) |
| timestamp | timestamp (Y-m-d H:i:s) |
| time | datetime (H:i:s) |
| date | datetime (Y-m-d) |
| binary | image |
| boolean | bit |