CakePHP - Manual/Developing/Models/Creating /wiki/Manual/Developing/Models/Creating History/revisions of CakePHP/Manual/Developing/Models/Creating en-us 2009-02-13 22:25:22 /wiki/Manual/Developing/Models/Creating/show?time=2009-02-13+22%3A25%3A22 <div class="pageBefore"><img src="/wiki_/images/z.gif" width="1" height="1" border="0" alt="" style="display:block" align="top" /></div><div class="page"> <b>Сравнение версий <a name=".manual.developing.models.creating" href="/wiki/Manual/Developing/Models/Creating" class="">/Manual&nbsp;/&nbsp;Developing&nbsp;/&nbsp;Models&nbsp;/&nbsp;Creating</a> за <a href="/wiki/Manual/Developing/Models/Creating?time=2009-02-13+22%3A25%3A22">2009-02-13 22:25:22</a> и <a href="/wiki/Manual/Developing/Models/Creating">2009-02-15 18:03:41</a></b><br /> <br /> <b>Добавлено:</b><br /> <div class="additions"><a name="h812-1"></a><h3>Заголовки (Titles)</h3> Объект, в&nbsp;физическом смысле, обычно имеет имя, приписываемое ему. Человек имеет имя, например, Иван, Петр или&nbsp;Василий. Блог имеет заголовок. У&nbsp;раздела есть название.<br /> После определения заголовка или&nbsp;имени поля <!--notypo-->CakePHP<!--/notypo--> будет автоматически использовать эту&nbsp;метку в&nbsp;различных случаях:<br /> <ul><li> Скаффолдинг — заголовки страниц, метки для&nbsp;полей ввода </li><li> Списки — обычно используется для&nbsp;выпадающих списков </li><li> <!--notypo-->TreeBehavior<!--/notypo--> — пересортировка, отображения дерева</li></ul> Если у&nbsp;вас есть заголовок и&nbsp;имя поля в&nbsp;таблице, то&nbsp;заголовок будет использоваться.<a name="h812-2"></a><h3>created и&nbsp;modified</h3> Если вы&nbsp;создадите в&nbsp;вашей таблице поле <em>created</em> или&nbsp;<em>modified</em> типа datetime, то&nbsp;<!--notypo-->CakePHP<!--/notypo--> будет автоматически заполнять их, когда запись будет создаваться или&nbsp;сохраняться в&nbsp;БД (до тех&nbsp;пор, пока сохраняемые данные не&nbsp;будут иметь значения для&nbsp;этих полей).<br /> Поля created и&nbsp;modified получат в&nbsp;качестве значений текущую дату и&nbsp;время, когда запись добавляется. Поле modified будет обновлено значением текущей даты и&nbsp;времени, когда существующая запись будет сохраняться.<br /> Примечание: Поле с&nbsp;именем <em>updated</em> будет вести себя также, как&nbsp;поле modified. Эти&nbsp;поля должны быть типа datetime со&nbsp;значением NULL по&nbsp;умолчанию, для&nbsp;распознования <!--notypo-->CakePHP<!--/notypo-->.<a name="h812-3"></a><h3>Использование UUID-ов в&nbsp;качестве первичного ключа</h3> Первичным ключам обычно назначают тип&nbsp;INT. СУБД будет автоматически увеличивать значение поля для&nbsp;каждой, вновь добавленной, записи. Альтернативный вариант &ndash; это, если вы&nbsp;определите первичный ключ типа CHAR(36), то&nbsp;<!--notypo-->CakePHP<!--/notypo--> будет автоматически генерировать UUIDы, когда будет создаваться новая запись.<br /> UUID &ndash; это&nbsp;32 байтная строка, разделенная четырьмя дефисами (всего 36 символов). <br /> Например:<br /> 550e8400-e29b-41d4-a7<span class="nobr">16&ndash;446</span>655440000<br /> UUIDы созданы быть уникальными не&nbsp;только для&nbsp;отдельной таблицы, но&nbsp;и для&nbsp;всех таблиц и&nbsp;баз данных. Если вам&nbsp;требуется поле, которое должно оставаться уникальным для&nbsp;всех систем, то&nbsp;UUIDы подходят лучше всего.<br /> <span class="missingpage">&lt;&lt; Понимание моделей</span><a href="/wiki/Understanding/edit?add=1" title="Создать эту страницу">?</a> | <span class="missingpage">Получение данных &gt;&gt;</span><a href="/wiki/Retrieving/edit?add=1" title="Создать эту страницу">?</a></div></div> 2009-02-12 20:27:21 /wiki/Manual/Developing/Models/Creating/show?time=2009-02-12+20%3A27%3A21 <div class="pageBefore"><img src="/wiki_/images/z.gif" width="1" height="1" border="0" alt="" style="display:block" align="top" /></div><div class="page"> <b>Сравнение версий <a href="/wiki/Manual/Developing/Models/Creating" class="">/Manual&nbsp;/&nbsp;Developing&nbsp;/&nbsp;Models&nbsp;/&nbsp;Creating</a> за <a href="/wiki/Manual/Developing/Models/Creating?time=2009-02-12+20%3A27%3A21">2009-02-12 20:27:21</a> и <a href="/wiki/Manual/Developing/Models/Creating?time=2009-02-13+22%3A25%3A22">2009-02-13 22:25:22</a></b><br /> <br /> <b>Добавлено:</b><br /> <div class="additions"><br /> <!--notypo-->CakePHP<!--/notypo--> спланирован быть независимым и&nbsp;будет работать с&nbsp;<!--notypo-->MySQL<!--/notypo-->, <!--notypo-->MSSQL<!--/notypo-->, Oracle, <!--notypo-->PostgreSQL<!--/notypo--> и&nbsp;другими СУБД. Вы&nbsp;можете создавать таблицы в&nbsp;базе данных, как&nbsp;обычно. Когда вы&nbsp;создадите классы моделей, то&nbsp;автоматически будет устанавлено соответствие с&nbsp;созданными таблицами.<br /> <br /> По&nbsp;соглашению имена таблицам даются во&nbsp;множественном числе и&nbsp;пишутся строчными буквами. Если имя&nbsp;таблицы состоит из&nbsp;нескольких слов, то&nbsp;слова надо разделять символом подчеркивания. Например, модели Ingredient должна соответствовать таблица с&nbsp;именем ingredients. Модели с&nbsp;именем <!--notypo-->EventRegistration<!--/notypo--> &ndash; таблица event_registrations. <!--notypo-->CakePHP<!--/notypo--> исследует ваши таблицы для&nbsp;определения типов данных каждого поля и&nbsp;использует эту&nbsp;информацию для&nbsp;автоматизации различных функциональных возможностей, например, таких, как&nbsp;вывод полей в&nbsp;отображение. <br /> <br /> Имена полей, по&nbsp;соглашению, состоят из&nbsp;строчных букв и&nbsp;разделяются, при&nbsp;необходимости, символом подчеркивания.<br /> <br /> Далее в&nbsp;этом разделе, вы&nbsp;узнаете, как&nbsp;<!--notypo--><!--/notypo--> ставит в&nbsp;соответствие типы полей базы данных и&nbsp;типы данных PHP, и&nbsp;как <!--notypo-->CakePHP<!--/notypo--> может автоматизировать задачи на&nbsp;основе того, как&nbsp;определены ваши поля.<br /> <br /> <hr noshade="noshade" size="1" /> <a name="h812-1"></a><h3>Ассоциации типов данных</h3> <br /> Каждая СУБД определяет типы данных немного по&nbsp;разному. С&nbsp;помощью класса источников данных для&nbsp;каждой СУБД, <!--notypo-->CakePHP<!--/notypo--> ставит в&nbsp;соответствие эти&nbsp;типы тому, что&nbsp;он&nbsp;распознал и&nbsp;создает единообразный интерфейс. Поэтому, не&nbsp;имеет значение на&nbsp;какой СУБД вам&nbsp;необходимо запустить приложение. <br /> В&nbsp;таблицах ниже представлено соответствие для&nbsp;различных СУБД.<br /> <br /> <hr noshade="noshade" size="1" /> <a name="h812-2"></a><h3><!--notypo-->MySQL<!--/notypo--></h3> <br /> <table class="usertable" border="1"> <tr class="userrow"><td class="usercell"><strong> <!--notypo-->CakePHP<!--/notypo--> Type</strong> </td><td class="usercell"><strong>Field Properties</strong> </td></tr> <tr class="userrow"><td class="usercell">primary_key </td><td class="usercell">NOT NULL auto_increment </td></tr> <tr class="userrow"><td class="usercell">string </td><td class="usercell">varchar(255) </td></tr> <tr class="userrow"><td class="usercell">text </td><td class="usercell">text</td></tr> <tr class="userrow"><td class="usercell">integer </td><td class="usercell">int(11) </td></tr> <tr class="userrow"><td class="usercell">float </td><td class="usercell">float</td></tr> <tr class="userrow"><td class="usercell">datetime </td><td class="usercell">datetime </td></tr> <tr class="userrow"><td class="usercell">timestamp </td><td class="usercell">datetime</td></tr> <tr class="userrow"><td class="usercell">time </td><td class="usercell">time </td></tr> <tr class="userrow"><td class="usercell">date </td><td class="usercell">date </td></tr> <tr class="userrow"><td class="usercell">binary </td><td class="usercell">blob </td></tr> <tr class="userrow"><td class="usercell">boolean </td><td class="usercell">tinyint(1)</td></tr> </table> <br /> <hr noshade="noshade" size="1" /> <a name="h812-3"></a><h3><!--notypo-->MySQLi<!--/notypo--></h3> <br /> <table class="usertable" border="1"> <tr class="userrow"><td class="usercell"><strong> <!--notypo-->CakePHP<!--/notypo--> Type</strong> </td><td class="usercell"><strong>Field Properties</strong> </td></tr> <tr class="userrow"><td class="usercell">primary_key </td><td class="usercell"> DEFAULT NULL auto_increment </td></tr> <tr class="userrow"><td class="usercell">string </td><td class="usercell">varchar(255) </td></tr> <tr class="userrow"><td class="usercell">text </td><td class="usercell">text</td></tr> <tr class="userrow"><td class="usercell">integer </td><td class="usercell">int(11) </td></tr> <tr class="userrow"><td class="usercell">float </td><td class="usercell">float</td></tr> <tr class="userrow"><td class="usercell">datetime </td><td class="usercell">datetime </td></tr> <tr class="userrow"><td class="usercell">timestamp </td><td class="usercell">datetime</td></tr> <tr class="userrow"><td class="usercell">time </td><td class="usercell">time </td></tr> <tr class="userrow"><td class="usercell">date </td><td class="usercell">date </td></tr> <tr class="userrow"><td class="usercell">binary </td><td class="usercell">blob </td></tr> <tr class="userrow"><td class="usercell">boolean </td><td class="usercell">tinyint(1)</td></tr> </table> <br /> <hr noshade="noshade" size="1" /> <a name="h812-4"></a><h3><!--notypo-->ADOdb<!--/notypo--></h3> <br /> <table class="usertable" border="1"> <tr class="userrow"><td class="usercell"><strong> <!--notypo-->CakePHP<!--/notypo--> Type</strong> </td><td class="usercell"><strong>Field Properties</strong> </td></tr> <tr class="userrow"><td class="usercell">primary_key </td><td class="usercell"> R(11)</td></tr> <tr class="userrow"><td class="usercell">string </td><td class="usercell"> C(255) </td></tr> <tr class="userrow"><td class="usercell">text </td><td class="usercell"> X</td></tr> <tr class="userrow"><td class="usercell">integer </td><td class="usercell">I(11) </td></tr> <tr class="userrow"><td class="usercell">float </td><td class="usercell">N</td></tr> <tr class="userrow"><td class="usercell">datetime </td><td class="usercell"> T&nbsp;(Y-m-d H:i:s) </td></tr> <tr class="userrow"><td class="usercell">timestamp </td><td class="usercell"> T&nbsp;(Y-m-d H:i:s)</td></tr> <tr class="userrow"><td class="usercell">time </td><td class="usercell"> T&nbsp;(H:i:s) </td></tr> <tr class="userrow"><td class="usercell">date </td><td class="usercell"> T&nbsp;(Y-m-d) </td></tr> <tr class="userrow"><td class="usercell">binary </td><td class="usercell">B </td></tr> <tr class="userrow"><td class="usercell">boolean </td><td class="usercell"> L(1)</td></tr> </table> <br /> <hr noshade="noshade" size="1" /> <a name="h812-5"></a><h3><!--notypo-->DB2<!--/notypo--></h3> <br /> <table class="usertable" border="1"> <tr class="userrow"><td class="usercell"><strong> <!--notypo-->CakePHP<!--/notypo--> Type</strong> </td><td class="usercell"><strong>Field Properties</strong> </td></tr> <tr class="userrow"><td class="usercell">primary_key </td><td class="usercell">not null generated by&nbsp;default as&nbsp;identity (start with 1, increment by&nbsp;1)</td></tr> <tr class="userrow"><td class="usercell">string </td><td class="usercell">varchar(255) </td></tr> <tr class="userrow"><td class="usercell">text </td><td class="usercell"> clob</td></tr> <tr class="userrow"><td class="usercell">integer </td><td class="usercell">integer(10) </td></tr> <tr class="userrow"><td class="usercell">float </td><td class="usercell">double</td></tr> <tr class="userrow"><td class="usercell">datetime </td><td class="usercell">timestamp (Y-m-d-H.i.s) </td></tr> <tr class="userrow"><td class="usercell">timestamp </td><td class="usercell">timestamp (Y-m-d-H.i.s)</td></tr> <tr class="userrow"><td class="usercell">time </td><td class="usercell">time (H.i.s)</td></tr> <tr class="userrow"><td class="usercell">date </td><td class="usercell">date (Y-m-d) </td></tr> <tr class="userrow"><td class="usercell">binary </td><td class="usercell">blob </td></tr> <tr class="userrow"><td class="usercell">boolean </td><td class="usercell">smallint(1)</td></tr> </table> <br /> <hr noshade="noshade" size="1" /> <a name="h812-6"></a><h3><!--notypo-->Firebird/Interbase<!--/notypo--></h3> <br /> <table class="usertable" border="1"> <tr class="userrow"><td class="usercell"><strong> <!--notypo-->CakePHP<!--/notypo--> Type</strong> </td><td class="usercell"><strong>Field Properties</strong> </td></tr> <tr class="userrow"><td class="usercell">primary_key </td><td class="usercell">IDENTITY (1, 1) NOT&nbsp;NULL</td></tr> <tr class="userrow"><td class="usercell">string </td><td class="usercell">varchar(255) </td></tr> <tr class="userrow"><td class="usercell">text </td><td class="usercell">BLOB SUB_TYPE 1 SEGMENT SIZE 100 CHARACTER SET&nbsp;NONE</td></tr> <tr class="userrow"><td class="usercell">integer </td><td class="usercell">integer </td></tr> <tr class="userrow"><td class="usercell">float </td><td class="usercell">float</td></tr> <tr class="userrow"><td class="usercell">datetime </td><td class="usercell">timestamp (d.m.Y H:i:s) </td></tr> <tr class="userrow"><td class="usercell">timestamp </td><td class="usercell">timestamp (d.m.Y H:i:s)</td></tr> <tr class="userrow"><td class="usercell">time </td><td class="usercell">time (H:i:s)</td></tr> <tr class="userrow"><td class="usercell">date </td><td class="usercell">date (d.m.Y) </td></tr> <tr class="userrow"><td class="usercell">binary </td><td class="usercell">blob </td></tr> <tr class="userrow"><td class="usercell">boolean </td><td class="usercell">smallint</td></tr> </table> <br /> <hr noshade="noshade" size="1" /> <a name="h812-7"></a><h3><!--notypo-->MS SQL<!--/notypo--></h3> <br /> <table class="usertable" border="1"> <tr class="userrow"><td class="usercell"><strong> <!--notypo-->CakePHP<!--/notypo--> Type</strong> </td><td class="usercell"><strong>Field Properties</strong> </td></tr> <tr class="userrow"><td class="usercell">primary_key </td><td class="usercell">IDENTITY (1, 1) NOT&nbsp;NULL</td></tr> <tr class="userrow"><td class="usercell">string </td><td class="usercell">varchar(255) </td></tr> <tr class="userrow"><td class="usercell">text </td><td class="usercell">text</td></tr> <tr class="userrow"><td class="usercell">integer </td><td class="usercell">int </td></tr> <tr class="userrow"><td class="usercell">float </td><td class="usercell">numeric</td></tr> <tr class="userrow"><td class="usercell">datetime </td><td class="usercell">datetime (Y-m-d H:i:s) </td></tr> <tr class="userrow"><td class="usercell">timestamp </td><td class="usercell">timestamp (Y-m-d H:i:s)</td></tr> <tr class="userrow"><td class="usercell">time </td><td class="usercell">datetime (H:i:s)</td></tr> <tr class="userrow"><td class="usercell">date </td><td class="usercell">datetime (Y-m-d)</td></tr> <tr class="userrow"><td class="usercell">binary </td><td class="usercell">image</td></tr> <tr class="userrow"><td class="usercell">boolean </td><td class="usercell">bit</td></tr> </table> <br /> <hr noshade="noshade" size="1" /> <a name="h812-8"></a><h3><!--notypo-->Oracle<!--/notypo--></h3> <br /> <table class="usertable" border="1"> <tr class="userrow"><td class="usercell"><strong> <!--notypo-->CakePHP<!--/notypo--> Type</strong> </td><td class="usercell"><strong>Field Properties</strong> </td></tr> <tr class="userrow"><td class="usercell">primary_key </td><td class="usercell">number NOT&nbsp;NULL</td></tr> <tr class="userrow"><td class="usercell">string </td><td class="usercell">varchar2(255) </td></tr> <tr class="userrow"><td class="usercell">text </td><td class="usercell">varchar2</td></tr> <tr class="userrow"><td class="usercell">integer </td><td class="usercell">numeric</td></tr> <tr class="userrow"><td class="usercell">float </td><td class="usercell">float</td></tr> <tr class="userrow"><td class="usercell">datetime </td><td class="usercell">date (Y-m-d H:i:s) </td></tr> <tr class="userrow"><td class="usercell">timestamp </td><td class="usercell">date (Y-m-d H:i:s)</td></tr> <tr class="userrow"><td class="usercell">time </td><td class="usercell">date (H:i:s)</td></tr> <tr class="userrow"><td class="usercell">date </td><td class="usercell">date (Y-m-d)</td></tr> <tr class="userrow"><td class="usercell">binary </td><td class="usercell">bytea</td></tr> <tr class="userrow"><td class="usercell">boolean </td><td class="usercell">boolean</td></tr> <tr class="userrow"><td class="usercell">number </td><td class="usercell">numeric</td></tr> <tr class="userrow"><td class="usercell">inet </td><td class="usercell">inet</td></tr> </table> <br /> <hr noshade="noshade" size="1" /> <a name="h812-9"></a><h3><!--notypo-->PostgreSQL<!--/notypo--></h3> <br /> <table class="usertable" border="1"> <tr class="userrow"><td class="usercell"><strong> <!--notypo-->CakePHP<!--/notypo--> Type</strong> </td><td class="usercell"><strong>Field Properties</strong> </td></tr> <tr class="userrow"><td class="usercell">primary_key </td><td class="usercell">serial NOT&nbsp;NULL</td></tr> <tr class="userrow"><td class="usercell">string </td><td class="usercell">varchar(255) </td></tr> <tr class="userrow"><td class="usercell">text </td><td class="usercell">text</td></tr> <tr class="userrow"><td class="usercell">integer </td><td class="usercell">integer</td></tr> <tr class="userrow"><td class="usercell">float </td><td class="usercell">float</td></tr> <tr class="userrow"><td class="usercell">datetime </td><td class="usercell">timestamp (Y-m-d H:i:s) </td></tr> <tr class="userrow"><td class="usercell">timestamp </td><td class="usercell">timestamp (Y-m-d H:i:s)</td></tr> <tr class="userrow"><td class="usercell">time </td><td class="usercell">time (H:i:s)</td></tr> <tr class="userrow"><td class="usercell">date </td><td class="usercell">date (Y-m-d)</td></tr> <tr class="userrow"><td class="usercell">binary </td><td class="usercell">bytea</td></tr> <tr class="userrow"><td class="usercell">boolean </td><td class="usercell">boolean</td></tr> <tr class="userrow"><td class="usercell">number </td><td class="usercell">numeric</td></tr> <tr class="userrow"><td class="usercell">inet </td><td class="usercell">inet</td></tr> </table> <br /> <hr noshade="noshade" size="1" /> <a name="h812-10"></a><h3><!--notypo-->SQLite<!--/notypo--></h3> <br /> <table class="usertable" border="1"> <tr class="userrow"><td class="usercell"><strong> <!--notypo-->CakePHP<!--/notypo--> Type</strong> </td><td class="usercell"><strong>Field Properties</strong> </td></tr> <tr class="userrow"><td class="usercell">primary_key </td><td class="usercell">integer primary key</td></tr> <tr class="userrow"><td class="usercell">string </td><td class="usercell">varchar(255) </td></tr> <tr class="userrow"><td class="usercell">text </td><td class="usercell"> text</td></tr> <tr class="userrow"><td class="usercell">integer </td><td class="usercell">integer</td></tr> <tr class="userrow"><td class="usercell">float </td><td class="usercell">float</td></tr> <tr class="userrow"><td class="usercell">datetime </td><td class="usercell">datetime (Y-m-d H:i:s) </td></tr> <tr class="userrow"><td class="usercell">timestamp </td><td class="usercell">timestamp (Y-m-d H:i:s)</td></tr> <tr class="userrow"><td class="usercell">time </td><td class="usercell">time (H:i:s)</td></tr> <tr class="userrow"><td class="usercell">date </td><td class="usercell">date (Y-m-d)</td></tr> <tr class="userrow"><td class="usercell">binary </td><td class="usercell">blob</td></tr> <tr class="userrow"><td class="usercell">boolean </td><td class="usercell">boolean</td></tr> </table> <br /> <hr noshade="noshade" size="1" /> <a name="h812-11"></a><h3><!--notypo-->Sybase<!--/notypo--></h3> <br /> <table class="usertable" border="1"> <tr class="userrow"><td class="usercell"><strong> <!--notypo-->CakePHP<!--/notypo--> Type</strong> </td><td class="usercell"><strong>Field Properties</strong> </td></tr> <tr class="userrow"><td class="usercell">primary_key </td><td class="usercell">numeric(9,0) IDENTITY PRIMARY KEY</td></tr> <tr class="userrow"><td class="usercell">string </td><td class="usercell">varchar(255) </td></tr> <tr class="userrow"><td class="usercell">text </td><td class="usercell">text</td></tr> <tr class="userrow"><td class="usercell">integer </td><td class="usercell">int(11)</td></tr> <tr class="userrow"><td class="usercell">float </td><td class="usercell">float</td></tr> <tr class="userrow"><td class="usercell">datetime </td><td class="usercell">datetime (Y-m-d H:i:s) </td></tr> <tr class="userrow"><td class="usercell">timestamp </td><td class="usercell">timestamp (Y-m-d H:i:s)</td></tr> <tr class="userrow"><td class="usercell">time </td><td class="usercell">datetime (H:i:s)</td></tr> <tr class="userrow"><td class="usercell">date </td><td class="usercell">datetime (Y-m-d)</td></tr> <tr class="userrow"><td class="usercell">binary </td><td class="usercell">image</td></tr> <tr class="userrow"><td class="usercell">boolean </td><td class="usercell">bit</td></tr> </table> <br /> <br /> <br /> <br /> <br /> <br /> <br /> <br /> <br /> <br /> <br /></div></div>