вопрос про префикс БД folio

Автор Сообщение

kopusha

#1/06.01.2014 18:19
0

Аватар

Пользователи

Карма: +71

видоизменяю какой то плагин (любой, не важно).

он изначально работает для модуля page например. хочу его прикрутить к folio от биржи. в нем есть запрос например db_pages - я его меняю на db_folio. все нужные файлы переименовываю с pluginname.page.tpl или pluginname.page.php на pluginname.folio.tpl или pluginname.folio.php.

но вот встретился мне такой запрос $res = $db->query("SELECT t.*, pag.page_alias, pag.page_title, pag.page_cat,

посмотрев в БД на cot_folio я меняю page_title, на item_title,  и тд

А что делать с префиксами pag.page_title, pag.page_cat

 

 

Сообщения: 170

Lion

Суровый модератор
#2/06.01.2014 18:30
0

Модераторы

Карма: +50

pag.item_title

Сообщения: 497

kopusha

#3/06.01.2014 18:45
0

Аватар

Пользователи

Карма: +71

прокатит для модулей folio или project ?

Сообщения: 170

Lion

Суровый модератор
#4/06.01.2014 20:25
0

Модераторы

Карма: +50

Должно, это же имена полей в базе данных. См БД и аналогию в коде модулей, там все видно...

Сообщения: 497

kopusha

#5/06.01.2014 20:59
0

Аватар

Пользователи

Карма: +71

SQL error 42000: Syntax error or access violation: 1066 Not unique table/alias: 'pag' - этот pag меня и смущал

#0  cot_diefatal(SQL error 42000: Syntax error or access violation: 1066 Not unique table/alias: 'pag') 
#1  CotDB->query(SELECT t.*, pag.page_alias, pag.page_title, pag.page_cat, pag.item_alias, pag.item_title, pag.item_cat, ft.ft_title, p.fp_cat, u.user_name , com.*, pag2.page_alias AS p2_alias, pag2.page_id AS p2_id, pag2.page_cat AS p2_cat, pag2.page_title AS p2_title
		FROM cot_thanks AS t
			LEFT JOIN cot_users AS u ON t.th_fromuser = u.user_id
			LEFT JOIN cot_pages AS pag ON t.th_ext = 'page' AND t.th_item = pag.page_id
			LEFT JOIN cot_folio AS pag ON t.th_ext = 'folio' AND t.th_item = pag.item_id
			LEFT JOIN cot_forum_posts AS p ON t.th_ext = 'forums' AND t.th_item = p.fp_id
				LEFT JOIN cot_forum_topics AS ft ON p.fp_id > 0 AND p.fp_topicid = ft.ft_id
			LEFT JOIN cot_com AS com ON t.th_ext = 'comments' AND t.th_item = com.com_id
			LEFT JOIN cot_pages AS pag2 ON com.com_area = 'page' AND com.com_code = pag2.page_id
		WHERE th_touser = 36
		ORDER BY th_date DESC

выделил перечеркиванием свои вставки в иходный код плуга

 

 

Добавлено 9 минуты спустя:

для страницы в page есть 

pag.page_cat

у меня другой модуль - folio - там page_cat=item_cat, что делать с префиксом pag.

Сообщения: 170

Cmsworks

Булат
#6/06.01.2014 21:11
0

Администраторы

Карма: +683

Вам надо изучить как строятся запросы в mysql (Это базовые знания). У вас получается две таблицы имеют одно имя pag.

По вашему коду:

Ваша вставка 

LEFT JOIN cot_folio AS pag ON t.th_ext = 'folio' AND t.th_item = pag.item_id

должна быть такой:

LEFT JOIN cot_folio AS folio ON t.th_ext = 'folio' AND t.th_item = folio.item_id

соответственно, обращение к полям в таблице портфолио будет к примеру так: folio.item_title

Добавлено 1 минуты спустя:

pag в данном случае не префикс, а псевдоним таблицы cot_page для сокращенного обращения к ее полям.

Сообщения: 2416

Опытный веб-разработчик, фрилансер.
Разрабатываю сайты любой сложности на профессиональных фреймворках.

------

Почта для связи: developer@cmsworks.ru

kopusha

#7/06.01.2014 21:13
0

Аватар

Пользователи

Карма: +71

Вам надо изучить как строятся запросы в mysql (Это базовые знания)

 

это точно) 2 высших имею а занимаюсь фото и html версткой профессионально - вот и тыкаюсь-мыкаюсь

Сейчас попробую Ваш код

Добавлено 6 минуты спустя:

не работает

как я понимаю строка query("SELECT t.*, pag.page_alias, pag.page_title, pag.page_cat, folio.item_alias, folio.item_title, folio.item_cat, вытягивает из БД значения и только потом их join куда либо. но ведь у меня нет ни folio.item_title ни pag.item_title ни item_title...

Добавлено 1 минуты спустя:

pag в данном случае не префикс, а псевдоним таблицы cot_page для сокращенного обращения к ее полям.

вот мне и нужен псевдоним к фолио таблице. ни folio.item_title ни pag.item_title ни item_title не помагают. плуг реинсталю и кеши чищу есесно перед каждым маршьброском

Сообщения: 170

Cmsworks

Булат
#8/06.01.2014 21:27
0

Администраторы

Карма: +683

Перед запросом надо подключить модуль folio, чтобы использовать его API, такой строкой:

require_once cot_incfile('folio', 'module');

Дальше, в запросе замените cot_folio на $db_folio. Так как возможно у вас в БД таблица для портфолио называется не cot_folio, а lance_folio. Таким образом мы получаем имя таблицы в виде переменной.

Просто я не вижу весь ваш код, поэтому отвечаю наугад.

Добавлено 2 минуты спустя:

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

Сообщения: 2416

Опытный веб-разработчик, фрилансер.
Разрабатываю сайты любой сложности на профессиональных фреймворках.

------

Почта для связи: developer@cmsworks.ru

kopusha

#9/06.01.2014 21:31
0

Аватар

Пользователи

Карма: +71

выслал на мыло весь файл

Добавлено 2 минуты спустя:

может стоит весь плагин включить в сборку биржи - очобенно если подвязать к userpionts - за каждый "спасибо" поднимать рейтинг юзеру. в стандарте биржи возможно это не так актуально - у меня более широкая задача и было бы просто отлично иметь такой функционал

Сообщения: 170

Cmsworks

Булат
#10/06.01.2014 21:59
0

Администраторы

Карма: +683

В базовую сборку не будем включать сторонние плагины, так как это работа других авторов и с ними нужно согласовывать такие действия. Проще установить доп плагин, чем нагружать базовую сборку лишними частями кода.

Сообщения: 2416

Опытный веб-разработчик, фрилансер.
Разрабатываю сайты любой сложности на профессиональных фреймворках.

------

Почта для связи: developer@cmsworks.ru