Цитата:
В начале класса мы сразу указываем, с какой таблицей будем работать, чтобы в случае изменения ее названия можно было поменять его только в одном месте.
Объясните в чём может быть удобство такого подхода:
Код:
$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%.
В общем то лишнее это, определять имена таблиц.