Русскоязычный форум, посвященный фреймворку Kohana
http://forum.kohanaframework.su/

Создаем первую Модель
http://forum.kohanaframework.su/viewtopic.php?f=36&t=106
Страница 1 из 1

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

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

Автор:  Sergey [ 03 авг 2012, 04:15 ]
Заголовок сообщения:  Re: Создаем первую Модель

Цитата:
В начале класса мы сразу указываем, с какой таблицей будем работать, чтобы в случае изменения ее названия можно было поменять его только в одном месте.


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

Код:
$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%.

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

Автор:  admin [ 04 авг 2012, 15:32 ]
Заголовок сообщения:  Re: Создаем первую Модель

Фиг его знает. Мне еще бывает удобно сразу видеть, какие таблицы используются в этой Модели.

Автор:  xunicorn [ 19 мар 2013, 11:24 ]
Заголовок сообщения:  Re: Создаем первую Модель

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

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

Автор:  Sergey [ 19 мар 2013, 15:46 ]
Заголовок сообщения:  Re: Создаем первую Модель

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 {} 

Автор:  xunicorn [ 20 мар 2013, 19:46 ]
Заголовок сообщения:  Re: Создаем первую Модель

спасибо, просветил.

Страница 1 из 1 Часовой пояс: UTC + 4 часа [ Летнее время ]
Powered by phpBB® Forum Software © phpBB Group
http://www.phpbb.com/