Класс табличной модели

Класс используется для создания модели пользовательской таблицы. Она нужна для того, чтобы для работы с ней были доступны методы xPDO.

load_model('Object', 'objects', function ($model) {
        /** @var modHelperModelBuilder $model */
        $model->id('id')->pk(); // тип поля unsigned integer и указываем, что это первичный ключ.
        $model->varchar('name', 100)->setDefault('string')->rulePregMatch('invalid','/^[a-zA-Z\s]+$/','Нельзя использовать цифры в названии!');
        $model->text('description')->null()->alias('desc');
        $model->arr('properties')->null(); // array phptype
        $model->int('rid',true)->aggregate('Resource',array('class'=>'modResource','foreign'=>'id','cardinality'=>'one', 'owner'=>'foreign'))->index();
        $model->int('createdby')->unsigned()->aggOneForeign('CreateUser','modUser','id')->index(); 
        $model->int('createdby', true)->aggOneForeign('EditUser','modUser','id')->index(); 
        $model->datetime('createdon'); // Если дата храниться в БД с типом datetime
        $model->bigint('editedon',true)->phpType('datetime');// Если дата храниться в базе в UNIX формате.
    });
  • char($name, $presision=255) — добавляет поле типа char в модель.
  • varchar($name, $presision=255) — добавляет поле типа varchar в модель.
  • text($name) — добавляет поле типа text в модель.
  • mediumText($name) — добавляет поле типа mediumText в модель.
  • longText($name) — добавляет поле типа longText в модель.
  • id($name, $length=10) — добавляет поле типа unsigned integer в модель.
  • int($name, $length=10, $unsigned=false) — добавляет поле типа integer в модель. Третий аргумент может быть передан вместо второго.
  • tinyInt($name, $length=3, $unsigned=false) — добавляет поле типа tinyint в модель. Третий аргумент может быть передан вместо второго.
  • smallInt($name, $length=5, $unsigned=false) — добавляет поле типа smallint в модель. Третий аргумент может быть передан вместо второго.
  • mediumInt($name, $length=8, $unsigned=false) — добавляет поле типа mediumint в модель. Третий аргумент может быть передан вместо второго.
  • bigInt($name, $length=20, $unsigned=false) — добавляет поле типа bigint в модель. Третий аргумент может быть передан вместо второго.
  • float($name, $precision='12,2', $unsigned=false) — добавляет поле типа float в модель. Третий аргумент может быть передан вместо второго.
  • decimal($name, $precision='12,2', $unsigned=false) — добавляет поле типа float в модель. Третий аргумент может быть передан вместо второго.
  • double($name, $precision='20,2', $unsigned=false) — добавляет поле типа float в модель. Третий аргумент может быть передан вместо второго.
  • bool($name) — добавляет поле типа boolean в модель.
  • arr/asArray($name) — добавляет поле типа array в модель.
  • json($name) — добавляет поле типа json в модель.
  • date($name) — добавляет поле типа date в модель.
  • datetime($name) — добавляет поле типа datetime в модель.
  • timestamp($name) — добавляет поле типа datetime в модель.
  • time($name) — добавляет поле типа time в модель.
  • aggregate($alias, $attributes) — добавляет связь aggregate. $attributes — ассоциативный массив с ключами "class", "local", "foreign", "cardinality" и "owner".
  • composite($alias, $attributes) — добавляет связь composite. $attributes — ассоциативный массив с ключами "class", "local", "foreign", "cardinality" и "owner".

Все методы возвращают объект поля модели, который описан ниже.

Класс полей модели

Этот класс содержит следующие методы:

  • phpType($type) — устанавливает phptype поля. Может понадобится в некоторых случаях. Например, если вы храните дату в формате UNIX timestamp, т.е. dbtype имеет тип "integer", но получать дату нужно в формате "datetime" или "timestamp".
  • null() — указывает, что колонка может иметь значение NULL.
  • setDefault($value) — указывает, что колонка имеет значение по-умолчанию.
  • index($alias='') — указывает, что поле является индексом. Если определить одинаковый $alias для нескольких полей, то будет создан групповой индекс.
  • pk() — указывает, что поле является первичным ключем. Для составных первичных ключей нужно указать для каждого поля.
  • fk($alias='') — аналоничен методу index.
  • unique($alias='') — указывает, что поле является уникальным индексом.
  • fulltext($alias='') — указывает, что поле является полнотекствым индексом.
  • alias($alias) — устанавливает псевдоним для поля.
  • rulePregMatch($name, $rule, $message) — устанавливает правило для Regex валидации (документация).
  • ruleXPDO($name, $rule, $message, $value = NULL) — устанавливает правило для xPDOValidationRule валидации.
  • ruleCallback($name, $rule, $message) — устанавливает правило для callback валидации.
  • aggregate($alias, $attributes) — определяет связь aggregatee для текущего поля. $attributes — ассоциативный массив с ключами "class", "foreign", "cardinality" и "owner". Можно использовать короткие варианты —
    • aggregateManyForeign / aggManyForeign($alias,$class,$foreign) — добавляет связь aggregate с уже определёнными cardinality="many" и owner="foreign".
    • aggregateOneForeign / aggOneForeign($alias,$class,$foreign) — добавляет связь aggregate с уже определёнными cardinality"one" и owner="foreign".
    • aggregateManyLocal / aggManyLocal($alias,$class,$foreign) — добавляет связь aggregate с уже определёнными cardinality="many" и owner="local".
    • aggregateOneLocal / aggOneLocal($alias,$class,$foreign) — добавляет связь aggregate с уже определёнными cardinality="one" и owner="local".
  • composite($alias, $attributes) — определяет связь composite для текущего поля. $attributes — ассоциативный массив с ключами "class", "foreign", "cardinality" и "owner". Можно использовать короткие варианты —
    • compositeManyForeign / comManyForeign($alias,$class,$foreign) — добавляет связь composite с уже определёнными cardinality="many" и owner="foreign".
    • compositeOneForeign / comOneForeign($alias,$class,$foreign) — добавляет связь composite с уже определёнными cardinality="one" и owner="foreign".
    • compositeManyLocal / comManyLocal($alias,$class,$foreign) — добавляет связь composite с уже определёнными cardinality="many" и owner="local".
    • compositeOneLocal / comOneLocal($alias,$class,$foreign) — добавляет связь composite с уже определёнными cardinality="one" и owner="local".

Статьи

Загружаем модель для своих таблиц

Выделите опечатку и нажмите Ctrl + Enter, чтобы отправить сообщение об ошибке.