Помощь с запросом 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
Владимир Бабусенко
28 июня 2017, 09:20
modx.pro
1 107
0

Комментарии: 1

Владимир Бабусенко
30 июня 2017, 10:50
0
Решение, если кто то найдет данное сообщение по поиску… Значение по умолчанию не пишится в БД
Нужно использовать явно 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')"]`
    ]]
    Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.
    1