Я хотел бы попросить рекомендации с использованием ORM (поверх MySQL) и PHP.До сегодняшнего дня я был пользователем CodeIgniter, но теперь я хочу кодировать с FUEL (http://fuelphp.com), и у них есть ORM.
. Моя проблема в том, что 75% сайтов, для которых я должен кодировать, имеют 2 или более языкаи данные повторяются (название для lang1, 2, 3 ... описание для lang1, 2, 3 ...). На самом деле я делаю это с CodeIgniter:
$data = $this->db->where('id', $id)->get('pages')->row();
if(false == $data)
return false;
$this->db->where('module', 'pages')->where('pk', $data->id)->where("locale", $locale);
$query = $this->db->get("translations");
foreach($query->result() as $row)
$result->{$row->label} = $row->value;
$result->_data = $data;
Использование структуры MySQL:
CREATE TABLE IF NOT EXISTS `pages` (
`id` INT NOT NULL AUTO_INCREMENT ,
`id_user` MEDIUMINT(8) UNSIGNED NOT NULL ,
`id_parent` INT NULL DEFAULT 0 ,
`order` INT NULL DEFAULT 0 ,
`template` INT NULL DEFAULT 1 ,
`image` VARCHAR(125) NULL ,
`flag_active` TINYINT NOT NULL DEFAULT 1 ,
`flag_shop` TINYINT NOT NULL DEFAULT 0 ,
`modified` INT NULL ,
`created` INT NULL ,
PRIMARY KEY (`id`) )
ENGINE = InnoDB;
CREATE TABLE IF NOT EXISTS `translations` (
`id` INT NOT NULL AUTO_INCREMENT ,
`id_user` MEDIUMINT(8) UNSIGNED NOT NULL ,
`locale` VARCHAR(45) NOT NULL ,
`module` VARCHAR(45) NOT NULL ,
`pk` INT NOT NULL ,
`label` VARCHAR(45) NOT NULL ,
`value` TEXT NULL ,
`modified` INT NULL ,
`created` INT NULL ,
PRIMARY KEY (`id`) )
ENGINE = InnoDB;
Я думаю, что это самоописательно, но сначала я добавляю страницу, а затем, для каждой страницы, я добавляю запись перевода с модулем = table_name, locale = language, pk = id_page, label = title/ description / ..., value = value.
Я хотел бы развить это и посмотреть, как лучше справиться с использованием ORM, каков наилучший способ быстрой разработки и т. д.
Заранее спасибо!