CakePHP спланирован быть независимым и будет работать с MySQL, MSSQL, Oracle, PostgreSQL и другими СУБД. Вы можете создавать таблицы в базе данных, как обычно. Когда вы создадите классы моделей, то автоматически будет устанавлено соответствие с созданными таблицами.
По соглашению имена таблицам даются во множественном числе и пишутся строчными буквами. Если имя таблицы состоит из нескольких слов, то слова надо разделять символом подчеркивания. Например, модели Ingredient должна соответствовать таблица с именем ingredients. Модели с именем EventRegistration – таблица event_registrations. CakePHP исследует ваши таблицы для определения типов данных каждого поля и использует эту информацию для автоматизации различных функциональных возможностей, например, таких, как вывод полей в отображение.
Имена полей, по соглашению, состоят из строчных букв и разделяются, при необходимости, символом подчеркивания.
Далее в этом разделе, вы узнаете, как СakePHP ставит в соответствие типы полей базы данных и типы данных PHP, и как CakePHP может автоматизировать задачи на основе того, как определены ваши поля.
Каждая СУБД определяет типы данных немного по разному. С помощью класса источников данных для каждой СУБД, CakePHP ставит в соответствие эти типы тому, что он распознал и создает единообразный интерфейс. Поэтому, не имеет значение на какой СУБД вам необходимо запустить приложение.
В таблицах ниже представлено соответствие для различных СУБД.
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) |
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) |
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) |
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) |
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 |
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 |
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 |
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 |
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 |
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 |
Объект, в физическом смысле, обычно имеет имя, приписываемое ему. Человек имеет имя, например, Иван, Петр или Василий. Блог имеет заголовок. У раздела есть название.
После определения заголовка или имени поля CakePHP будет автоматически использовать эту метку в различных случаях:
Если у вас есть заголовок и имя поля в таблице, то заголовок будет использоваться.
Если вы создадите в вашей таблице поле created или modified типа datetime, то CakePHP будет автоматически заполнять их, когда запись будет создаваться или сохраняться в БД (до тех пор, пока сохраняемые данные не будут иметь значения для этих полей).
Поля created и modified получат в качестве значений текущую дату и время, когда запись добавляется. Поле modified будет обновлено значением текущей даты и времени, когда существующая запись будет сохраняться.
Примечание: Поле с именем updated будет вести себя также, как поле modified. Эти поля должны быть типа datetime со значением NULL по умолчанию, для распознования CakePHP.
Первичным ключам обычно назначают тип INT. СУБД будет автоматически увеличивать значение поля для каждой, вновь добавленной, записи. Альтернативный вариант – это, если вы определите первичный ключ типа CHAR(36), то CakePHP будет автоматически генерировать UUIDы, когда будет создаваться новая запись.
UUID – это 32 байтная строка, разделенная четырьмя дефисами (всего 36 символов).
Например:
550e8400-e29b-41d4-a716–446655440000
UUIDы созданы быть уникальными не только для отдельной таблицы, но и для всех таблиц и баз данных. Если вам требуется поле, которое должно оставаться уникальным для всех систем, то UUIDы подходят лучше всего.
<< Понимание моделей | Получение данных >>