помогите сделать выборку

Здравствуйте, помогите, пожалуйста, разобраться:

Нужно вывести на странице последние работы (портфолио) через pdoresources, у которых одно из TV (множественный список, массив чисел через запятую) содержит ID этой страницы на которой они выводятся.

То есть у страницы если id 18, то выводить те ресурсы портфолио, у которых в tv portfolio_type есть в массиве 18
Зашел в тупик:
{'pdoResources' | snippet : [
    'limit' => 4,
    'parents' => 24,
    'depth' => 1,
    'sortby' => 'RAND()',
    'includeTVs' => 'portfolio_type',
    'sortdir' => 'ASC',
    'tpl' => 'tpl.lastwork_item',
'where' => [ '$_modx->resource.id:in' => [$portfolio_type] ], 

]}
Спасибо!
Александр
08 сентября 2022, 14:29
modx.pro
630
0

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

Алексей Смирнов
08 сентября 2022, 14:56
+3
Скорее всего вам это должно помочь:
modx.pro/solutions/23005
    Александр
    08 сентября 2022, 16:51
    0
    спасибо, конкретно ваш метод не пригодился, но подсказку нашел как сделать:
    Вот так сработало:

    {set $ptypes = $_modx->resource.id} 
    
     {'pdoResources' | snippet : [
        'limit' => 4,
        'parents' => 24,
        'depth' => 1,
        'sortby' => 'RAND()',
        'includeTVs' => 'portfolio_type',
        'sortdir' => 'ASC',
        'tpl' => 'tpl.lastwork_item',
        'where'=> ["portfolio_type:RLIKE" => $ptypes]
    
    ]}
      Роман
      08 сентября 2022, 17:31
      0
      Кривое решение. ID = 14, а portfolio_type 13||144||1440
        Александр
        08 сентября 2022, 18:07
        0
        да, кривое, подскажите как сделать несколько условий типа LIKE здесь?
          Алексей Смирнов
          08 сентября 2022, 20:15
          0
          Те вы не дочитал до конца? Странно, что отвергаете решение которое для вас подойдёт, судя по тому что вы пишите. Просто удивлен.
            Александр
            09 сентября 2022, 07:30
            0
            я дочитал, но не смог применить вашу сложную конструкцию к своей задаче
            Роман
            09 сентября 2022, 10:19
            +1
            {set $ptypes = $_modx->resource.id} 
            {'pdoResources' | snippet : [
                'limit' => 4,
                'parents' => 24,
                'depth' => 1,
                'sortby' => 'RAND()',
                'includeTVs' => 'portfolio_type',
                'sortdir' => 'ASC',
                'tpl' => 'tpl.lastwork_item',
                'where' => [ ["portfolio_type:LIKE" => "%|"~$ptypes, "OR:portfolio_type:LIKE" => $ptypes~"|%","OR:portfolio_type:LIKE" => "%|"~$ptypes~"|%","OR:portfolio_type:=" => $ptypes ]]
            ]}
            Это решение конечно красивое, но что-то не получается обработать его. Может, кто-то и сможет реализовать.
            WHERE FIND_IN_SET($ptypes, replace("TVportfolio_type`.`value", "||", ","))
              Александр
              09 сентября 2022, 11:08
              0
              Спасибо, у меня получилось именно это решение
      Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.
      8