pdoResources where + Migx
Можно ли как-то оптимизировать данный запрос? Не сильно нравится конструкция проверки в шаблоне с прогоном через foreach нужной строки Migx записи.
{'Localizator' | snippet : [
'snippet' => 'pdoResources',
'parents' => 0,
'level' => 0,
'limit' => 0,
'tvPrefix' => '',
'includeTVs' => 'author_ru, author_en, team_role',
'where' => '{"template":4, "team_role.member_id:LIKE":"%'~$_modx->resource.id~'%"}',
'tpl' => '@INLINE
{foreach $team_role as $key => $value}
{if $team_role[$key].member_id == $_modx->resource.id ?}{var $role = $team_role[$key]}{continue}{/if}
{/foreach}
<span>{$role["role_"~$_modx->config.localizator_key]}<span/> —
<strong><a href="{$id | url | urlLang}">«{$pagetitle}»</a></strong>
<span>{$_pls["author_"~$_modx->config.localizator_key]}</span>
',
]}
Комментарии: 8
top
Нет
«Нет» — это ответ на вопрос из поста. Запрос оптимизировать не получится.
Мне одному показалась странной запись?
"team_role.member_id:LIKE":"%'~$_modx->resource.id~'%"
Если ты на что то обратил внимание — это автоматически становится странным и важным. Конкретно в твоем случае еще и уязвимым )).
Да нет, тут скорее проблема в построении запроса. Имеем набор данных
Это ведь не корректно. Но на данный момент у ТС скорее всего еще нет ресурсов с таким большим ID. Поэтому код до поры до времени работает так, как он и задумал.
21680, 21681, 21686, 21682, 31684, ...
Что вернет запрос?WHERE member_id LIKE '%168%'
21680, 21681, 21686, 31684Это ведь не корректно. Но на данный момент у ТС скорее всего еще нет ресурсов с таким большим ID. Поэтому код до поры до времени работает так, как он и задумал.
К сожалению ничего друго-го не придумал. Можно конечно сделать через MIGXDb, чтобы не использовать LIKE, но пока нет на это времени. Возможно, со временем переделаю.
Ну вот вы и сами ответили на свой вопрос
Можно ли как-то оптимизировать данный запрос? Не сильно нравится конструкция проверки в шаблоне с прогоном через foreach нужной строки Migx записи
Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.