Базовая модель ключа с двумя ключами/индексами
Зависимости
- Нет зависимостей
Рассмотрим простой пример применения модели ключевым полем которого является связка из 2-х полей.
Пусть у нас есть таблица где хранятся статьи сайта на разных языках, т.е. при заходе по ссылкам:
www.example.com/articles?id=1001 и www.example.com/ru/articles?id=1001
Мы видим одну и туже статью с id=1001 только в первом случае на английском (DEF_LANG = en) а во втором на русском
При такой структуре, очевидно, что получение уникальной статьи зависит от article_id и lang_id, т.е. связка этих ключей даёт нам уникальную запись в БД.
Следовательно здесь мы и применяем модель ключевое поле которой является связкой по двум ключам.
class ArticleTextModel extends ModelDoubleIndex { protected function CreateTable() { $this->db->query("CREATE TABLE IF NOT EXISTS ?# ( `article_id` INT, `lang_id` INT NOT NULL, `title` VARCHAR(1024) CHARACTER SET utf8 COLLATE utf8_general_ci, `short` VARCHAR(2048) CHARACTER SET utf8 COLLATE utf8_general_ci, `full` VARCHAR(4096) CHARACTER SET utf8 COLLATE utf8_general_ci, PRIMARY KEY (`article_id`, `lang_id`) ) AUTO_INCREMENT=1 DEFAULT CHARSET=latin1;", $this->table ); } public function __construct($article_id = NULL, $lang_id = NULL, $onlyShow = false) { global $g_databases; parent::__construct($g_databases->db, "article_texts", "article_id", $article_id, "lang_id", $lang_id, $onlyShow); } };