Помощь с запросом msearch2
Есть вызов msearch2
лог запроса
[[!mSearch2:default=`999999`?
&limit=`0`
&includeTVs = `tv_users_group`
&where = `{"tv_users_group:IS":null, "OR:tv_users_group:=":"inspirit"}`
&showLog = `1`
]]
на null проверяю, так как значение по умолчанию.лог запроса
"SELECT SQL_CALC_FOUND_ROWS `modResource`.`id`, `modResource`.`type`, `modResource`.`contentType`, `modResource`.`pagetitle`, `modResource`.`longtitle`, `modResource`.`description`, `modResource`.`alias`, `modResource`.`link_attributes`, `modResource`.`published`, `modResource`.`pub_date`, `modResource`.`unpub_date`, `modResource`.`parent`, `modResource`.`isfolder`, `modResource`.`introtext`, `modResource`.`richtext`, `modResource`.`template`, `modResource`.`menuindex`, `modResource`.`searchable`, `modResource`.`cacheable`, `modResource`.`createdby`, `modResource`.`createdon`, `modResource`.`editedby`, `modResource`.`editedon`, `modResource`.`deleted`, `modResource`.`deletedon`, `modResource`.`deletedby`, `modResource`.`publishedon`, `modResource`.`publishedby`, `modResource`.`menutitle`, `modResource`.`donthit`, `modResource`.`privateweb`, `modResource`.`privatemgr`, `modResource`.`content_dispo`, `modResource`.`hidemenu`, `modResource`.`class_key`, `modResource`.`context_key`, `modResource`.`content_type`, `modResource`.`uri`, `modResource`.`uri_override`, `modResource`.`hide_children_in_tree`, `modResource`.`show_in_tree`, `modResource`.`properties`, `intro`, IFNULL(`TVtv_users_group`.`value`, 'Users') AS `tv_users_group` FROM `modx_site_content` AS `modResource` LEFT JOIN `modx_mse2_intro` `Intro` ON `modResource`.`id`=`Intro`.`resource` LEFT JOIN `modx_site_tmplvar_contentvalues` `TVtv_users_group` ON `TVtv_users_group`.`contentid` = `modResource`.`id` AND `TVtv_users_group`.`tmplvarid` = 18 WHERE ( `TVtv_users_group`.`value` IS NULL OR `TVtv_users_group`.`value` = 'inspirit' AND `modResource`.`id` IN (393) AND `modResource`.`published` = 1 AND `modResource`.`deleted` = 0 ) GROUP BY modResource.id ORDER BY FIELD(`modResource`.`id`,'393') "
Если глянуть в where то видно что указан 393 ресурс, при этом в этом ресурсе TVtv_users_group = inspirit, но при таком запросе вываливает все ресурсы сайта, это и странно, есть же условие AND `modResource`.`id` IN (393)… Что не так с запросом, не подскажите? Мне надо выбрать ресурсы из тех которые попали в IN, и у которых значение TVtv_users_group null или inspiritКомментарии: 1
Решение, если кто то найдет данное сообщение по поиску… Значение по умолчанию не пишится в БД
Нужно использовать явно leftJoin
Нужно использовать явно leftJoin
&leftJoin=`{
"tvval": {
"class":"modTemplateVarResource",
"alias":"t1",
"on": "t1.contentid = modResource.id OR t1.tmplvarid = id_TV(18)"
}
}`
&where=`["(t1.value IS NULL OR t1.value = 'inspirit')"]`
Полный вызов[[!mSearch2:default=`999999`?
&limit=`0`
&includeTVs = `tv_users_group`
&leftJoin=`{
"tvval": {
"class":"modTemplateVarResource",
"alias":"t1",
"on": "t1.contentid = modResource.id OR t1.tmplvarid = 18"
}
}`
&where=`["(t1.value IS NULL OR t1.value = 'inspirit')"]`
]]
Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.