Документация

Начало работы

Модели (models)

Шаблоны (views) и маршрутизация (routes)

Формы

SQL запросы

Сессии и безопасность

Плагины

Группа

Если необходимо связать записи между собой внутри одной таблицы, используется тип данных Группа "group". Например у товаров должны быть сопутствующие товары которые задаются для каждого товара индивидуально, а их количество может быть различным у каждого товара.

class Products extends Model
{
    protected $name = "Товары каталога";

    protected $model_elements = array(
        array("Активен", "bool", "active", array("on_create" => true)),
        array("Название", "char", "name", array("required" => true)),
        array("Цена", "int", "price", array("required" => true)),
        array("Позиция", "order", "order"),
        array("Раздел каталога", "enum", "parent", array("foreign_key" => "Catalogs", 
                                                         "is_parent" => true)),
        array("Изображения", "multi_images", "images"),
        array("Описание", "text", "desc", array("rich_text" => true)),
        array("Рекомендуемые товары", "group", "additional")
    );
}

При извлечении данных из поля "additional" их удобно подставлять в оператор "field->in" или "field->not-in", описанным в разделе Конструктор запросов.

//Нашли нужный товар
$product = $mv -> products -> findRecordById(35);

//Извлекаем сопутствующие товары если они есть
if($product -> additional)
{
    $rows = $mv -> products -> select(array("active" => 1, 
                                            "order->asc" => "order", 
                                            "id->in" => $product -> additional));

    foreach($rows as $row)
    {
        ...
    }
}

Альтернативным способом группировки товаров является добавление поля типа "enum", когда каждому товару выбирается из выпадающего списка название его группы.

Предыдущий раздел

Многие ко многим

Следующий раздел

Управление записями