Базовая модель ключа с двумя ключами/индексами
Зависимости
- Нет зависимостей
Рассмотрим простой пример применения модели ключевым полем которого является связка из 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);
}
};