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>
            
        ',
]}
Виталий
03 февраля 2019, 09:06
modx.pro
905
0

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

Виталий
03 февраля 2019, 09:06
0
top
    Илья Уткин
    03 февраля 2019, 15:10
    0
    Нет
      Илья Уткин
      03 февраля 2019, 16:29
      0
      «Нет» — это ответ на вопрос из поста. Запрос оптимизировать не получится.
    Евгений Борисов
    03 февраля 2019, 20:19
    +1
    Мне одному показалась странной запись?
    "team_role.member_id:LIKE":"%'~$_modx->resource.id~'%"
      Николай Савин
      03 февраля 2019, 20:51
      +1
      Если ты на что то обратил внимание — это автоматически становится странным и важным. Конкретно в твоем случае еще и уязвимым )).
        Евгений Борисов
        03 февраля 2019, 21:06
        +2
        Да нет, тут скорее проблема в построении запроса. Имеем набор данных
        21680, 21681, 21686, 21682, 31684, ...
        Что вернет запрос?
        WHERE member_id LIKE '%168%'
        21680, 21681, 21686, 31684

        Это ведь не корректно. Но на данный момент у ТС скорее всего еще нет ресурсов с таким большим ID. Поэтому код до поры до времени работает так, как он и задумал.
          Виталий
          04 февраля 2019, 02:10
          0
          К сожалению ничего друго-го не придумал. Можно конечно сделать через MIGXDb, чтобы не использовать LIKE, но пока нет на это времени. Возможно, со временем переделаю.
            Евгений Борисов
            04 февраля 2019, 02:32
            0
            Ну вот вы и сами ответили на свой вопрос
            Можно ли как-то оптимизировать данный запрос? Не сильно нравится конструкция проверки в шаблоне с прогоном через foreach нужной строки Migx записи
      Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.
      8