Группа
Если необходимо связать записи между собой внутри одной таблицы, используется тип данных Группа "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", когда каждому товару выбирается из выпадающего списка название его группы.
Предыдущий раздел
Многие ко многим