Русскоязычный форум, посвященный фреймворку Kohana

Все о фреймворке Kohana. Обсуждение уроков, документации.
Текущее время: 28 мар 2024, 18:34

Часовой пояс: UTC + 4 часа [ Летнее время ]




Начать новую тему Ответить на тему  [ Сообщений: 6 ] 
Автор Сообщение
 Заголовок сообщения: Создаем первую Модель
СообщениеДобавлено: 02 апр 2012, 00:16 
Не в сети
Администратор
Аватара пользователя

Зарегистрирован: 12 фев 2012, 01:02
Сообщения: 462
В данном уроке рассматривается создание Модели для работы со статьями блога. В качестве примера показан вывод всех статей из базы в блок контента на главной странице.
Ссылка на урок http://kohanaframework.su/database/model_create

_________________
kohanaframework.su - обучение фреймворку Kohana


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Создаем первую Модель
СообщениеДобавлено: 03 авг 2012, 04:15 
Не в сети
Администратор
Аватара пользователя

Зарегистрирован: 24 июл 2012, 18:00
Сообщения: 701
Откуда: Murom, Russia
Цитата:
В начале класса мы сразу указываем, с какой таблицей будем работать, чтобы в случае изменения ее названия можно было поменять его только в одном месте.


Объясните в чём может быть удобство такого подхода:

Код:
$sql = "SELECT " . $this->_tableProducts . ".`id` AS 'ID'," . $this->_tableProducts . ".`product` AS 'PRODUCT'," . $this->_tableProducts . ".`price` AS 'PRICE', " . $this->_tableProducts . ".`avilable` AS 'AVILABLE', " . $this->_tableSizes . ".`size`, " . $this->_tableBrands . ".`brand` AS 'BRAND'" .
       " FROM "  . $this->_tableProducts ."," . $this->_tableCategories . "," . $this->_tableProductCat . "," . $this->_tableSex . "," . $this->_tableBrands . "," . $this->_tableProductBr . "," . $this->_tableSizes . "," . $this->_tableSizeProd .
       " WHERE " . $this->_tableCategories . ".`id` = :category" .
       " AND "   . $this->_tableProductCat . ".`category_id` = " . $this->_tableCategories . ".`id` "  .
       " AND "   . $this->_tableProducts . ".`id` = " . $this->_tableProductCat . ".`product_id`" .
       " AND "   . $this->_tableProducts . ".`sex_id` = " . $this->_tableSex . ".`id`" .
       " AND "   . $this->_tableSex . ".`sex` = :sex" .
       " AND "   . $this->_tableProductBr . ".`product_id` = " . $this->_tableProducts . ".`id`" .
       " AND "   . $this->_tableProductBr . ".`brand_id` = " . $this->_tableBrands . ".`id`" .
       " AND "   . $this->_tableSizes . ".`id` = " . $this->_tableSizeProd . ".`size_id`" .
       " AND "   . $this->_tableSizeProd . ".`product_id` = " . $this->_tableProducts . ".`id`";


Я в начале следовал вашей рекомендации и с тех пор у меня ни разу не возникло желания/потребности переименовать таблицу.

Хотя да, есть у меня абстрактный класс Model_Common extends Model в ктором прописаны все таблицы:
Код:
protected $_tableUsers = 'users';
protected $_tableRoles = 'roles';
// и так далее ...


Только жутко не удобно работать с таким запросом. Пришёл к выводу, что проще переписать запрос на человекочитаемый язык:
Код:
SELECT products.`id` AS 'ID'
     , products.`product` AS 'PRODUCT'
     , products.`price` AS 'PRICE'
     , products.`avilable` AS 'AVILABLE'
     , sizes.`size` AS 'SIZE'
     , brands.`brand` AS 'BRAND'
FROM
  products, categories, products_categories, sex, brands, products_brands, sizes, sizes_products
WHERE
  categories.`id` = 8
  AND products_categories.`category_id` = categories.`id`
  AND products.`id` = products_categories.`product_id`
  AND products.`sex_id` = sex.`id`
  AND sex.`sex` = 'man'
  AND products_brands.`product_id` = products.`id`
  AND products_brands.`brand_id` = brands.`id`
  AND sizes.`id` = sizes_products.`size_id`
  AND sizes_products.`product_id` = products.`id`;


А то, что у меня появится желание переименовать таблицу равно 1% из 100%.

В общем то лишнее это, определять имена таблиц.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Создаем первую Модель
СообщениеДобавлено: 04 авг 2012, 15:32 
Не в сети
Администратор
Аватара пользователя

Зарегистрирован: 12 фев 2012, 01:02
Сообщения: 462
Фиг его знает. Мне еще бывает удобно сразу видеть, какие таблицы используются в этой Модели.

_________________
kohanaframework.su - обучение фреймворку Kohana


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Создаем первую Модель
СообщениеДобавлено: 19 мар 2013, 11:24 
Не в сети
Новичок

Зарегистрирован: 12 мар 2013, 12:43
Сообщения: 24
видел вопрос в комментах: если я использую конструкцию Model::factory('dir/script_name')->some_method(); - то кохана у меня ругается, что нету класса Model_dir/script_name.

Вопрос: как положить модель в папку и использовать ее оттуда?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Создаем первую Модель
СообщениеДобавлено: 19 мар 2013, 15:46 
Не в сети
Администратор
Аватара пользователя

Зарегистрирован: 24 июл 2012, 18:00
Сообщения: 701
Откуда: Murom, Russia
xunicorn писал(а):
видел вопрос в комментах: если я использую конструкцию Model::factory('dir/script_name')->some_method(); - то кохана у меня ругается, что нету класса Model_dir/script_name.

Вопрос: как положить модель в папку и использовать ее оттуда?


модель должна распологаться в classes/model/someclass.php если вам она нужна в друго месте, например в classes/vendor/subdir/classname.php то в classes/model пишем:

Код:
Model_Someclass extends Vendor_Subdir_Classname {} 


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Создаем первую Модель
СообщениеДобавлено: 20 мар 2013, 19:46 
Не в сети
Новичок

Зарегистрирован: 12 мар 2013, 12:43
Сообщения: 24
спасибо, просветил.


Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 6 ] 

Часовой пояс: UTC + 4 часа [ Летнее время ]


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 11


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  
cron
Все о фреймворке Kohana  | 
Powered by phpBB® Forum Software © phpBB Group